Ogni coppia di parentesi (
... )
in cui il primo carattere non è un ?
* è un "gruppo di cattura", che pone il suo risultato in $1
, $2
, $3
, ecc, che possono essere utilizzati nel modello di sostituzione.
Si potrebbe anche vedere la stessa cosa di \1
, \2
, \3
in altri motori di regex, (o anche nell'espressione originale a volte, per la ripetizione)
Questi sono chiamati "backreference", perché in genere rimandano a (una prima) parte dell'espressione.
(* L'?
indica le varie forme di comportamento speciale, tra cui un gruppo non-cattura, che è (?:
... )
e semplicemente gruppi senza cattura.)
Nel tuo esempio specifico, il $ 1 sarà il gruppo (^|)
che è "posizione dell'inizio della stringa (larghezza zero) o di un singolo carattere di spazio".
Quindi sostituendo l'intera espressione con quella, in pratica stai rimuovendo la variabile theClass
e potenzialmente uno spazio dopo di essa. (L'espressione di chiusura (|$)
è l'inverso - uno spazio o la posizione finale della stringa - e dal momento che il suo valore non viene utilizzato, avrebbe potuto essere non catturare con (?: |$)
invece.)
Speriamo che questo spiega tutto ok - lasciare so se vuoi altre informazioni.
Inoltre, ecco qualche ulteriore lettura dal sito regular-expressions.info:
fonte
2010-07-13 09:26:46
Grazie, ora è chiaro. Ho avuto un piccolo problema a capire cosa intendevi per "ogni coppia di parentesi", ma ciò si applica al modello regex.Se il modello regex contiene una coppia di parentesi, allora è un gruppo che cattura. –