Regex для соответствия пробелу или концу строки

Я пытаюсь найти каждый экземпляр @username в тексте комментария и заменить его ссылкой. Вот мой PHP до сих пор:

$comment = preg_replace('/@(.+?)\s/', '<a href="/users/${1}/">@${1}</a> ', $comment);

Единственной проблемой является regex, зависит от того, чтобы там быть пробелом после @username ссылки. Кто-либо может помочь мне настроить это так, это будет также соответствовать, если это будет в конце строки?

9
задан Kirk Ouimet 22 March 2010 в 07:04
поделиться

2 ответа

попробуйте /@(\w+)/ вместо /@(.+?)\s/.

9
ответ дан 4 December 2019 в 09:36
поделиться

Чтобы определить пробел или конец строки, вы должны использовать: /@(.+?)(?=\s|$)/, но если ваши имена пользователей не содержат небуквенно-цифровых символов, проще использовать \w для символа слова или \b для разрыва слова, т.е.: \b для разрыва слова. Например: /@(.+?)\b/ или /@(\w)+/.

13
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: