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