2010-01-22 21 views

risposta

7

dare al gruppo un nome di tag:

(?<TagName>.*) 

Sono assolutamente che questo sia buona pratica. Considera cosa succede quando cambi l'espressione regolare. Se si utilizzano gli indici per estrarre i dati, l'ordine di questi gruppi potrebbe cambiare. Chiamandoli, specifichi esattamente i dati che pensi che il gruppo contenga, quindi è anche una forma di autocomposizione.

+2

La sintassi alternativa è '(? 'TagName'. *)'. –

+0

Grazie mille per la risposta. Non so perché pensavo che sarebbe stato male. – Payne

1

gruppi di acquisizione denominati sono belle, di solito tho con semplice regex di utilizzare il gruppo di acquisizione numerica è probabilmente più streamliney, alcuni suggerimenti qui:

http://www.regular-expressions.info/named.html

+0

Grazie mille per la risposta, e per il collegamento. – Payne

2

Come altri hanno fatto notare la sintassi è (?<GroupName>....).

Ecco un esempio che illustra come creare un gruppo chiamato Key e un gruppo chiamato Value, e altrettanto importante (ma spesso dimenticato) - come estrarre i gruppi per nome dall'oggetto partita risultante:

string s = "foo=bar/baz=qux"; 
Regex regex = new Regex(@"(?<Key>\w+)=(?<Value>\w+)"); 
foreach (Match match in regex.Matches(s)) 
{ 
    Console.WriteLine("Key = {0}, Value = {1}", 
     match.Groups["Key"].Value, 
     match.Groups["Value"].Value); 
} 

Normalmente non utilizzerei i gruppi denominati per espressioni molto semplici, ad esempio se esiste un solo gruppo.

Per espressioni regolari più complesse con molti gruppi contenenti espressioni complesse, sarebbe probabilmente una buona idea utilizzare i gruppi denominati. D'altra parte, se la tua espressione regolare è così complicata da doverlo fare, è essere una buona idea per vedere se è possibile risolvere il problema in un altro modo, o dividerlo in passi più piccoli, più semplici .

Problemi correlati