Поиск…


замечания

NB Эмулирующие притяжательные кванторы

Основное использование потенциальных квантификаторов

Потенциальные кванторы - это еще один класс кванторов во многих вариантах регулярных выражений, которые позволяют эффективно отключать откат для данного токена. Это может помочь улучшить производительность, а также предотвратить совпадения в определенных случаях.

Класс притяжательных кванторов можно отличить от ленивых или жадных кванторов путем добавления a + после квантификатора, как показано ниже:

Квантор жадный ленивый Притяжательный падеж
Ноль или больше * *? *+
Один или больше + +? ++
Нулевой или один ? ?? ?+

Рассмотрим, например, два шаблона ".*" И ".*+" , Работающие на строке "abc"d . В обоих случаях " в начале строки сопоставляется, но после этого два шаблона будут иметь разные поведения и результаты.

Тогда жадный квантификатор вырвет оставшуюся часть строки abc"d . Поскольку это не соответствует шаблону, оно будет возвращаться назад и отбрасывать d , оставляя квантификатор, содержащий abc" . Поскольку это все еще не соответствует шаблону, квантификатор будет отбрасывать значение " , оставляя его содержащим только abc . Это соответствует шаблону (поскольку " сопоставляется буквам, а не квантификатором »), а регулярное выражение сообщает об успешности.

Притяжательный квантификатор также разрушит остальную часть строки, но, в отличие от жадного квантификатора, он не отступит. Поскольку его содержимое, abc"d , не разрешает остальную часть шаблона совпадения, регулярное выражение останавливается и сообщается о сбое.

Поскольку притяжательные квантификаторы не выполняют обратный поиск, они могут привести к значительному увеличению производительности по длинным или сложным шаблонам. Однако они могут быть опасны (как показано выше), если кто-то не знает, как точно квантификаторы работают внутри страны.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow