La oss si at du ønsker å inkludere modifier, jeg i den ikke-fange sub gruppen "(:? En)" ovenfor. Du kan gjøre det slik: en) Følgende uttrykk gir en kamp (:( jeg?): ". Dette er ett og det er to" = ~ /(?:(?i)one).*(two)/Du kan bruke følgende kode til test: bruke strenge; if (". Dette er ett og det er to" = ~ /(?:(?i)one).*(two)/) {print "matchet \\ n"; } Else {skrive "Ikke Matchet \\ n"; } Modifikatorer i grupper Vi har sagt at å sette en endrings i en regex er det samme som å ha modifiserings bare på slutten av regex. Spørsmålet du kan ha er denne:..
"Hvis modifier er i en gruppe, ville det ha sin virkning bare i gruppen eller i hele regex La oss bare skrive fire korte skript for å bekrefte at dette er den første: bruk strenge ; if (". Dette er ett og det er to" = ~ /((?i)one).*(two)/) {print "matchet \\ n";} else {print "Ikke Matchet \\ n";} regex ovenfor er "/((?i)one).*(two)/". Merk at i den tilgjengelige streng, "ONE" er i store bokstaver. Matching skjer i koden ovenfor. Her har vi å gjøre med en fange . gruppe Vurder følgende kode fortsatt med en fange gruppe: Bruk streng; if (". Dette er ett og det er to" = ~ /((?i)one).
*(two)/) {print "matchede \\ n ";} else {print" Ikke Matchet \\ n ";} Den regex er over fortsatt" /((?i)one).*(two)/ONE "er fortsatt i" Merk at i den tilgjengelige streng,. " store bokstaver og "to", er denne gangen i store bokstaver Matching ikke forekommer i koden ovenfor I regex "to" er i senker sak;.. dette er grunnen samsvar ikke oppstår. De ovennevnte to programmene håndtere fange grupper, ville ikke- fange grupper oppfører seg på samme måte? Vi skal bruke to enkle programmer for å bekrefte dette. Tenk på følgende: bruke strenge; if (". Dette er ett og det er to" = ~ /(?:(?i)one).
*(two)/) {print "matchet \\ n"; } Else {skrive "Ikke Matchet \\ n"; } Den regex ovenfor er "/(?:(?i)one).*(two)/". Merk at i den tilgjengelige streng, "ONE" er i store bokstaver. Matching forekommer i ovenstående kode. Her