Я пытаюсь preg_match слово, начинающееся с @, не в квадратных скобках

То есть Алиса должна соответствовать, но Боб не должен в следующем

Hello @alice and [@bob](...)

Я могу сопоставить сами имена со следующим простым регулярным выражением: /\@([\w]+)/,

Кто-нибудь знает, как заставить регулярное выражение не соответствовать Бобу?

0

Решение

Индекс группы 1 содержит символы, которые вы хотите.

Используйте отрицательный ответ.

@(?![^\[\]]*])(\w+)

DEMO

ИЛИ ЖЕ

Через изменение,

\[.*?\]|@(\w+)

DEMO

ИЛИ ЖЕ

Через глагол PCRE (*SKIP)(*F)

\[.*?\](*SKIP)(*F)|@(\w+)

DEMO

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]