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