Para evitar que el grupo "(uno)" por encima de ser capturado, es necesario "(?: Uno)" para el grupo. El grupo sigue siendo válido en el patrón con su otra ventaja, pero no es capturado. El siguiente código ilustra esto: usar estricta; miarr = ("Este es uno y que es de dos." = ~ /(?:one).*(two)/); print $ arr [0], "\\ n"; print $ arr [1], "\\ n"; La salida del código es: dos que impidió que el primer grupo, "(uno)" de ser capturado por su transformación en "(?: Uno)". Desde la salida, vemos que "uno" de la cadena disponible no ha sido capturado, como esperábamos.
"dos" ha sido capturado, y es el único elemento de la matriz. Para hacer un grupo sin fines de captura, utilice la siguiente sintaxis: (:? GroupContent) Incluidos los modificadores en grupos no Captura Hemos visto cómo se puede incrustar modificadores en una expresión regular. Es posible que desee incluir un modificador en un grupo sin fines de captura. Hay dos maneras de hacer esto. Digamos que usted desea incluir el modificador, i en el subgrupo no captura "(?: Uno)" anterior. Usted puede hacerlo así: uno) La siguiente expresión produce un partido (:( i??): ".
Este es uno y que es de dos" = ~ /(?:(?i)one).*(two)/Puede utilizar el siguiente código para probar: use strict; si (". Este es uno y que es dos" = ~ /(?:(?i)one).*(two)/) {print "Igualados \\ n"; } Else {print "No Coincide \\ n"; } Modificadores de los grupos nos han dicho que poner un modificador en una expresión regular es lo mismo que tener el modificador justo al final de la expresión regular. La pregunta que pueda tener es la siguiente:. ".
Si el modificador está en un grupo, ¿se tiene su efecto sólo en el grupo o en su totalidad la expresión regular que nos acaba de escribir cuatro guiones cortos para verificar que este es el primero: use strict ; si (". Este es uno y que es dos" = ~ /((?i)one).*(two)/) {print "Igualados \\ n";} else {print "No Igualados \\ n";} La expresi