Что означает это регулярное выражение в PHP? - PullRequest
2 голосов
/ 27 августа 2010
/(?![a-z]+:)/

Кто-нибудь знает?

Ответы [ 3 ]

3 голосов
/ 27 августа 2010

/ - разделители.

?! - отрицательный прогноз.

[a-z] - это класс символов (любойсимвол в диапазоне az)

+ равно один или несколько раз предыдущего шаблона ([a-z] в данном случае)

: равнопросто литерал двоеточия

Это примерно означает «смотрите вперед и убедитесь, что после двоеточия нет буквенных символов».

Это регулярное выражение имело бы больше смысла, если бы оно имело начало привязки строки: /^(?![a-z]+:/, поэтому оно не будет соответствовать abc: (как сказал бы один из других ответов), но без (* 1027)*) Я не знаю, насколько это полезно.

2 голосов
/ 27 августа 2010

в соответствии с Regex Buddy (продукт, который я настоятельно рекомендую):

Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?![a-z]+:)»
   Match a single character in the range between “a” and “z” «[a-z]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   Match the character “:” literally «:»
0 голосов
/ 27 августа 2010

(?!REGEX) - это синтаксис для негативного прогноза .Проверьте ссылку для объяснения перспектив.

Регулярное выражение не выполняется, если шаблон [a-z]+: появляется в строке из текущей позиции.Если шаблон не найден, регулярное выражение выполнится успешно, но не будет использовать никаких символов.

Это будет соответствовать 123: или abc , но не abc:

Это будет соответствовать : в abc:.

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