Du ønsker måske at inkludere en modifikator i en ikke-fanger gruppe. Der er to måder at gøre dette. Lad os sige, du ønsker at inkludere modifier, jeg i den ikke-fange undergruppe "(:? En)" ovenfor. Du kan gøre det sådan her: en) Følgende udtryk producerer en kamp (:( jeg?): ". Dette er en, og det er to" = ~ /(?:(?i)one).*(two)/Du kan bruge følgende kode til test: Brug streng; hvis (". Dette er en, og det er to" = ~ /(?:(?i)one).
*(two)/) {print "Matches \\ n"; } Else {print "Ikke Matchet \\ n"; } Modifiers i grupperne Vi har sagt, at sætte en modifikator i en regex er det samme som at have modificerende netop i slutningen af regex. Det spørgsmål, du måtte have, er dette:.. "Hvis modifier er i en gruppe, ville det have sin virkning i gruppen eller i hele regex Lad os bare skrive fire korte scripts til at kontrollere, at dette er den første: brug streng og hvis (". Dette er en, og det er to" = ~ /((?i)one).*(two)/) {print "Matches \\ n";} else {print "Not Matched \\ n";} regex Ovenstående er "/((?i)one).*(two)/".
Bemærk, at i den tilgængelige streng, "ONE" er i store bogstaver. Matching sker i ovenstående kode. Her har vi at gøre med en fange Overvej gruppe følgende kode stadig med en fange gruppe:. bruge streng, og hvis (". Dette er en, og det er to" = ~ /((?i)one).*(two)/) {print "Matchet \\ n ";} else {print" Not Matched \\ n ";} Den regex Ovenstående er stadig" /((?i)one).*(two)/ONE "er stadig i" Bemærk, at i den tilgængelige streng, ". store bogstaver og "to", denne gang er i den store bogstaver Matching ikke forekommer i ovenstående kode i regex "to" er i sænker sag..
dette er grunden til matchning ikke forekommer. De to ovennævnte programmer håndtere indfange grupper, ville ikke-fange grupper opfører sig på samme måde? Vi skal bruge to mere simple programmer til at kontrollere dette. Overvej følgende: Brug streng; hvis (". Dette er en, og det er to" = ~ /(?:(?i)one).*(two)/) {print "Matches \\ n"; } Else {print "Ikke Matchet