PHP regex - сопоставить все, но не одно или несколько слов - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти любую строку, это не совсем одно или несколько слов

Мой шаблон

(?!(^ignoreme$)|(^ignoreme2$))

Я ищу

ignoreme   - no
ignoreme2  - no
ignoremex  - match
ignorem    - match
gnoreme    - match
ignoreme22 - match

Но он возвращает много места,Как это сделать, спасибо.https://regex101.com/r/u4EsNv/1

1 Ответ

0 голосов
/ 22 января 2019

Вы можете использовать это исправленное регулярное выражение:

^(?!ignoreme2?$).*$

Обновленная демоверсия RegEx

Информация о регулярных платежах:

  • ^: старт
  • (?!ignoreme2?$): Небрежный взгляд на неудачу в матче, когда у нас впереди ignoreme или ignoreme2 до конца.
  • .*: соответствует 0 больше любых символов
  • $: конец

Обратите внимание, что регулярное выражение (?!(^ignoreme$)|(^ignoreme2$)) совпадает с первыми 2 недопустимыми случаями, поскольку вы включили ^ в отрицательные прогнозные выражения, не входящие в него. Это приводит к тому, что механизм регулярных выражений начинает сопоставлять после 1-го символа, чтобы удовлетворить предполагаемые утверждения. (Вы можете видеть, что в regex101 выделены совпадения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...