Domanda

Ho una regex dove

%word% can occur multiple times, separated by a "<"

% word% è definito come ". *? " | [a-zA-Z] + così ho scritto

(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*

Esiste un modo per ridurlo usando i gruppi di acquisizione?

(".*"|[a-zA-Z]+)([<]\1)*, 

Ma non credo che \ 1 possa essere usato perché significherebbe ripetere la prima acquisizione, poiché non saprei cosa è stato catturato in quanto può essere una stringa tra virgolette o una parola.

Qualsiasi cosa simile che posso usare per fare riferimento al gruppo precedentemente scritto. Sto lavorando in C #.

È stato utile?

Soluzione 2

Poiché il supporto non è ancora disponibile per la funzione, ho creato un sostituto della stringa, in cui ho scritto le parole specifiche che devo sostituire con regex usando %% e quindi ho scritto il programma per sostituirlo con l'espressione regolare definita per testo.

Altri suggerimenti

usando String.Format per evitare la ripetizione e no non c'è modo di ripetere letteralmente il gruppo regex

String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top