2014-02-28 4 views
0

У меня есть эта строка кода:PHP preg_match_all строка начинается с @ подчиняющегося любым символом

preg_match_all('/(?!\b)(@\w+\b)/', $s, $rgMatches); 

$ s является длинная строка (включая пробелы) для поиска, $ rgMatches является массивом совпадений

Эта строка кода будет соответствовать строкам, таким как @blahblah или @ blah22blah Однако, если строка содержит @ blah.blah (точка среди букв), она не совпадает.

Как я могу улучшить свой код?

+0

Почему вы пишете '(?! \ B)' в начале? –

+0

@CasimiretHippolyte это точно, но его можно удалить, без проблем, вторая часть должна быть исправлена ​​ –

+0

Уверен, что? Что ты пытаешься сделать? вы пытаетесь найти пользователей, но не электронную почту? –

ответ

0

Вы можете использовать этот шаблон:

/\[email protected]\w+(?:\.\w+)*/ 

или более разрешительный:

/\[email protected][\w.]+/ 

\B не может быть полезно с тем, что вы хотите сделать, это перевод (?!\b)

+0

как об этом примере @ Transient @ Wind или @ Transient # Wind –

+0

@TransientWind: Это не то, что вы задали в своем исходном вопросе. –

+0

Извините, что я должен упомянуть о специальных персонажах, я просто вспомнил один случай, который был точкой ... –

Смежные вопросы