Как работает этот фрагмент (?!word\b)?

\b(?!word\b)\S{4,16}\b

Не понял, как работает это выражение в этом месте: (?!word\b)\S.


Ответы (1 шт):

Автор решения: dIm0n

Это negative lookahead. В данном случае означает, что не может быть отдельно стоящего слова word.

  • \b ― граница слова ((^\w|\w$|\W\w|\w\W))

  • (?!word\b) ― отсутствие сочетания word + граница слова

  • \S{4,16}\b ― непробельные 4-16 символов + граница слова

Например:

word ― не найдёт

word hello ― не найдёт word, но найдёт hello

word123456789ABC ― найдёт

word123456789ABCD ― не найдёт

→ Ссылка