Regular Expressions
Потенциальные квантификаторы
Поиск…
замечания
Основное использование потенциальных квантификаторов
Потенциальные кванторы - это еще один класс кванторов во многих вариантах регулярных выражений, которые позволяют эффективно отключать откат для данного токена. Это может помочь улучшить производительность, а также предотвратить совпадения в определенных случаях.
Класс притяжательных кванторов можно отличить от ленивых или жадных кванторов путем добавления a +
после квантификатора, как показано ниже:
Квантор | жадный | ленивый | Притяжательный падеж |
---|---|---|---|
Ноль или больше | * | *? | *+ |
Один или больше | + | +? | ++ |
Нулевой или один | ? | ?? | ?+ |
Рассмотрим, например, два шаблона ".*"
И ".*+"
, Работающие на строке "abc"d
. В обоих случаях "
в начале строки сопоставляется, но после этого два шаблона будут иметь разные поведения и результаты.
Тогда жадный квантификатор вырвет оставшуюся часть строки abc"d
. Поскольку это не соответствует шаблону, оно будет возвращаться назад и отбрасывать d
, оставляя квантификатор, содержащий abc"
. Поскольку это все еще не соответствует шаблону, квантификатор будет отбрасывать значение "
, оставляя его содержащим только abc
. Это соответствует шаблону (поскольку "
сопоставляется буквам, а не квантификатором »), а регулярное выражение сообщает об успешности.
Притяжательный квантификатор также разрушит остальную часть строки, но, в отличие от жадного квантификатора, он не отступит. Поскольку его содержимое, abc"d
, не разрешает остальную часть шаблона совпадения, регулярное выражение останавливается и сообщается о сбое.
Поскольку притяжательные квантификаторы не выполняют обратный поиск, они могут привести к значительному увеличению производительности по длинным или сложным шаблонам. Однако они могут быть опасны (как показано выше), если кто-то не знает, как точно квантификаторы работают внутри страны.