l’abbinamento {{string}} nell’espressione regolare c #

qual è il regex per la corrispondenza di una stringa all’interno di due parentesi graffe come in

{{string}} 

il risultato dovrebbe essere una string .

Devo sfuggire entrambe le parentesi graffe?

No, in realtà il seguente dovrebbe funzionare bene:

 "{{([^}]*)}}" 

Modifica: come sottolineato da dtb, l’espressione sopra non riesce per una stringa contenente un singolo } tra parentesi quadre. Per gestire questo caso il seguente esempio farebbe un lavoro molto migliore:

 "{{((?:}(?!})|[^}])*)}}" 

Modifica 2: la soluzione più semplice tuttavia sarebbe probabilmente la seguente:

 "{{(.*?)}}" 
 {{string}} 

: p

o

 {{(.*)}} 

solo numeri all’interno di {{}}

 {{([0-9])}} 

solo alcuni personaggi:

 {{([a-zA-Z])}} 

Credo che questa sarebbe la regex migliore / più semplice ansible per catturare in modo specifico il CONTENUTO delle parentesi graffe:

 (?< ={{).*?(?=}}) 

Analizzato, questo dice:

 01 (?< ={{) # match AFTER two open curly brackets 02 .*? # match anything, but BE LAZY ABOUT IT 03 (?=}}) # until there are two closing curly brackets 

Con questa espressione, la partita INTERA sarà il contenuto delle parentesi graffe e le parentesi graffe verranno lasciate sul posto / ignorate

Per abbinare l'intera espressione con parentesi graffa, utilizzare quanto segue:

 01 {{ # match two open curly brackets 02 .*? # match anything, but BE LAZY ABOUT IT 03 }} # match two closing curly brackets 

Se vuoi supportare più linee all'interno delle parentesi graffe, usa [\s\S]*? invece di .*? nella parte sulla linea 02 , o specificare l'opzione 'singleline' per il parser regex (DOTALL in Java, ecc, ecc, ecc ...).

Non rigetta le istanze come some text {{{inside}}} other test e può produrre risultati indesiderati - se sono possibili, chiedi un'espressione più forte e specifica diversi casi di ciò che dovrebbe e non dovrebbe essere abbinato.

Questo dovrebbe funzionare:

 resultString = Regex.Match(subjectString, @"^\{\{(.*?)\}\}$").Groups[1].Value; 
  string strRegex = @"{{(?\w+)}}"; Regex myRegex = new Regex(strRegex); string strTargetString = @"\n{{string}}"; var match = myRegex.Match(strTargetString); string str = match.Groups["String"].Value; 

La variabile str sarà la stringa dei braccialetti