≪
≫

Модификаторы операторов m// и s///

Всего в регулярных выражениях используется восемь модификаторов.

  • • і — игнорирует различие между заглавными и строчными буквами. На этот модификатор влияет установка локали.
  • • s — метасимвол «точка» совпадает со всеми символами, включая символ новой строки п.
  • • m — разрешает привязку7 метасимволам л и 5 к промежуточным символам п в тексте. В этом случае метасимвол Л совпадает не только в начале текста, как якорь Л, но и после каждого символа л, который не стоит в самом конце текста. А метасимвол 5 начинает совпадать не только в самом конце текста и перед п, стоящим в самом конце текста, как якорь , но также после каждого символа п. который не стоит в самом конце текста.
  • • х — игнорирует пробельные символы в регулярном выражении, разрешает использовать внутри шаблона комментарии.
  • • g — поиск и замена выполняются глобально (в неявном цикле). Подробности мы рассмотрим.
  • • с — работает только с модификатором g и только с оператором т//, который применяется в скалярном контексте. Запрещает сбрасывать текущую позицию поиска, когда не удалось найти очередного совпадения. Подробности будут далее.
  • • о — шаблон с этим модификатором однократной компиляции транслируется один раз во время компиляции всей программы. Здесь дело втом, что внутри регулярного выражения могут встречаться переменные, которые будут интерполироваться, т.е. их значения будут подставляться в шаблон в качестве литералов. (Не путайте эти переменные с теми, которые присутствуют в исполняемом коде Perl, такие переменные не интерполируются.) Если интерпретатор видит, что происходит интерполяция переменных, то он каждый раз перед использованием этого оператора поиска/замены будет транслировать регулярное выражение во внутреннее представление (байткод). Это может отнять много времени, если такое выражение используется в цикле. Но если вы уверены, что интерполируемая переменная (или массив) нс меняет своего значения, то можете поставить к такому регулярному выражению модификатор о. чтобы избежать его многократной компиляции. Этот модификатор может стоять только после всего регулярного выражения.
 
Посмотреть оригинал