Es por eso que para la salida, $ 3 no tiene nada que ver, ya que nada fue asignado a la misma. El grupo externo en el patrón es el gato (s |) y el grupo interno es (s |). El grupo exterior corresponde a "gatos" en "gatos domésticos". El grupo interior corresponde a "s" al final de los "gatos domésticos". Déjame hacer un poco más de explicación sobre estos captura. "(arquero (s |) |)" significa "guardián (s |)" o nada, y "guardián (s |)" significa "guardianes" o "guardián"; así que "guardianes" al lado de "libro" es capturado.
"(s |)" es un grupo y cualquier grupo puede ser capturado; que significa "s" o nada. Tenga en cuenta que no es necesariamente el grupo que está emparejado; es el patrón que se corresponde. La cadena de sub-match poder que tiene nuestra "s" es tenedores de libros. Como "contadores" se corresponde, nuestro "s" es capturado. Captura y juego no son las mismas cosas. Después de que ocurre coincidente, si hay cualquier grupo en la cadena de sub emparejado en la cadena disponibles, es capturado (asigna a una variable) del grupo.
La captura en la lista Contexto En el contexto de lista, un partido, /expresiones regulares /, con agrupaciones devolverá la lista de valores de grupo coincidentes ($ 1, $ 2, ...). Ilustro esta mostrando cómo para que coincida con el tiempo; este es un ejemplo importante. A continuación se produce una coincidencia. ($ mis horas, mis $ minutos, mis $ seg) = ($ thetime = ~ /(\\ d \\ d): (\\ d \\ d): (\\ d \\ d) /); Esta afirmación no está en la condición si.
El siguiente código ilustra esto: usar estricta; mi $ tiempo = "10:20:15"; ($ mis horas, mis $ minutos, mis $ seg) = ($ thetime = ~ /(\\ d \\ d): (\\ d \\ d): (\\ d \\ d) /); print "Hrs es:", $ hrs, "\\ n"; print "minutos es:", $ minutos, "\\ n"; print "Secs es:", $ segundos, "\\ n"; La salida de este código es: Hrs es: 10 minutos es: 20 Secs es: 15 Si conoce el sentido de la lista Contexto en Per