Регулярное выражение для соответствия пробелу или концу строки - PullRequest
9 голосов
/ 22 марта 2010

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

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

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

Ответы [ 2 ]

13 голосов
/ 22 марта 2010

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

9 голосов
/ 22 марта 2010

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

...