3.13.5. Еще о кванторах
3.13.5. Еще о кванторах
Мы уже встречались с атомарными подвыражениями в «классической» библиотеке регулярных выражений в Ruby. Они выделяются с помощью нотации (?>...) и являются «собственническими» в том смысле, что жадные и не допускают возврата внутрь подвыражения.
Oniguruma предлагает еще один способ выразить собственническую природу — с помощью квантора +. Он отличается от метасимвола + в смысле «один или более» и даже может использоваться с ним совместно. (На самом деле это «вторичный» квантор, как и ?, который можно употреблять в таких контекстах, как ??, +? и *?.)
Применение + к повторяющемуся образцу эквивалентно заключению его в скобки как независимого подвыражения, например:
r1 = /x*+/ # То же, что /(?>x*)/
r2 = /x++/ # То же, что /(?>x+)/
r3 = /x?+/ # То же, что /(?>x?)/
По техническим причинам Ruby не считает конструкцию {n,m}+ собственнической.
Понятно, что новый квантор — не более чем удобное обозначение, никакой новой функциональности он не несет.
Данный текст является ознакомительным фрагментом.