He estado estudiando más de perldoc perlre
, así como el Regular Expressions Cookbook y preguntas relacionadas en Stack Overflow y parece que no puedo encontrar lo que parece ser una expresión muy útil: ¿cómo sé el número de coincidencia actual?¿Hay alguna forma de evaluar el número de veces que una expresión regular de Perl ha coincidido?
hay expresiones para el último partido de grupo cerrado ($^N
), contenido de fósforo 3 (\g{3}
si entienden los docs correctamente), $'
, $&
y $`
. Pero no parece haber una variable que pueda usar que simplemente me diga cuál es el número de la coincidencia actual.
¿Realmente le falta? Si es así, ¿hay alguna razón técnica explicada por qué es difícil de implementar, o simplemente no estoy leyendo el perldoc con suficiente cuidado?
Tenga en cuenta que estoy interesado en una variable incorporada, NOT soluciones alternativas como usar (${$count++})
.
Por contexto, intento construir una expresión regular que coincida solo con algunas instancias de una coincidencia (por ejemplo, coincida todas las apariciones del carácter "E" pero NO coincida con las ocurrencias 3, 7 y 10 donde 3, 7 y 10 son simplemente números en una matriz). Me encontré con esto al tratar de construir una respuesta más idiomática a this SO question.
Quiero evitar la evaluación de expresiones regulares como cadenas para insertar 3, 7 y 10 en la propia expresión regular.
Tenga en cuenta que necesito el # de coincidencias, no el # de grupos capturados. – DVK
'Tenga en cuenta que estoy interesado en una variable incorporada': si no está en perlvar perlvar, ¿existe? Supuse que Perlvar contiene * todas las variables incorporadas de Perl. – TLP
No hay tal variable. perlvar no documenta todas las variables incorporadas, por ejemplo '@ ISA' no aparece, pero todo está documentado en alguna parte. Perl tiende a no tener funcionalidad oculta. ¿Puedes dar un ejemplo del problema que estás tratando de resolver que es mejor que la referencia que das? – Borodin