Sto studiando su perldoc perlre
e su Regular Expressions Cookbook e domande correlate su Stack Overflow e non riesco a trovare quella che sembra essere un'espressione molto utile: come faccio a sapere il numero di corrispondenze correnti?Esiste un modo per valutare il numero di volte in cui una espressione regolare Perl è stata abbinata?
ci sono espressioni per l'ultimo match gruppo chiuso ($^N
), contenuto di match 3 (\g{3}
se ho capito correttamente la documentazione), $'
, $&
e $`
. Ma non sembra esserci una variabile che posso usare che mi dice semplicemente qual è il numero della corrispondenza attuale.
Manca davvero? Se è così, c'è qualche motivo tecnico spiegato per cui è una cosa difficile da attuare, o semplicemente non sto leggendo abbastanza attentamente il perldoc?
Si prega di notare che sono interessato a una variabile integrata, NON soluzioni alternative come l'uso di (${$count++})
.
Per il contesto, sto cercando di creare un'espressione regolare che corrisponda solo ad alcune istanze di una corrispondenza (ad esempio, confronta tutte le occorrenze del carattere "E" ma NON corrisponde alle occorrenze 3, 7 e 10 dove 3, 7 e 10 sono semplicemente numeri in un array). Mi sono imbattuto in questo quando provavo a costruire una risposta più idiomatica a this SO question.
Voglio evitare di valutare regex come stringhe per inserire effettivamente 3, 7 e 10 nella regex stessa.
Si prega di notare che ho bisogno del numero di partite, non # di gruppi catturati. – DVK
'Si noti che sono interessato a una variabile incorporata': Se non è in perldoc perldvar, esiste? Ho assunto che perlvar contenga le variabili integrate * all * perl. – TLP
Non esiste una variabile di questo tipo. perlvar non documenta tutte le variabili built-in - per esempio '@ ISA' non appare - ma tutto è documentato da qualche parte. Perl tende a non avere funzionalità nascoste. Puoi dare un esempio del problema che stai cercando di risolvere che è meglio del riferimento che dai? – Borodin