*(two)/); печать $ обр [0], "\\ п"; печать $ обр [1], "\\ п"; Выход код: двое Мы предотвратили первую группу "(один)" от захвата превращая его в "(?: Один)". С выхода, мы видим, что "один" из имеющихся строки не были захвачены, как мы ожидали. "два" был захвачен, и это единственный элемент в массиве. Чтобы сделать группе без захвата, используйте следующий синтаксис: (?: GroupContent), включая модификаторы Номера захвата групп мы видели, как вы можете вставлять в модификаторов регулярного выражения. Вы можете включить модификатор в не-захвата группы. Есть два способа сделать это.
Допустим, вы хотите, чтобы включить модификатор, я в не-захвата подгруппы "(?) Один" выше. Вы можете сделать это следующим образом: один) следующее выражение производит матч (:( я?): ". Это одно и то два" = ~ /(?:(?i)one).*(two)/Вы можете использовать следующий код, чтобы тест: используйте строгое; если (". Это одно и то два" = ~ /(?:(?i)one).*(two)/) {печати "Согласованные \\ п"; } Еще {печать "не согласованный \\ п"; } Модификаторы в группах Мы сказали, что положить модификатор в регулярном выражении такой же как имеющий модификатор только в конце регулярного выражения.
Вопрос, который вы, возможно, придется это:.. "Если модификатор находится в группе, будет ли это иметь свой эффект только в группе или в целом регулярное выражение Давайте просто написать четыре коротких скриптов для проверки того, что это первый: используйте строгое , если (". Это одно и то два" = ~ /((?i)one).*(two)/) {печати "Согласованные \\ п";} еще {печать "не согласованный \\ п";} Регулярное выражение выше "/((?i)one).*(two)/". Отметим, что в имеющейся строке, "ОДИН" в верхнем регистре. Согласование происходит в коде выше. Здесь мы имеем дело с захвата .
Группа Рассмотрим следующий код еще с захвата группы: используйте строгое, если (". Это одно и то есть два" = ~ /((?i)one).*(two)/) {печати "Согласованные \\ п ";} еще {печать" не согласованный \\ п ";} Регулярно
2 и джейлбрейк…