¿Cómo puedo extraer todos los {} las fichas de una en una cadena .Net RegEx?
Pregunta
Necesito extraer los símbolos que están marcados con llaves de una cadena dada.
He intentado usar el Expresso de construir algo que va a analizar...
-------------------------------------------------------------
"{Token1}asdasasd{Token2}asd asdacscadase dfb db {Token3}"
-------------------------------------------------------------
y producir "Token1", "Token2", "Token3"
He intentado utilizar..
-------------------------------------------------------------
({.+})
-------------------------------------------------------------
...pero que parecía coincidir con la expresión completa.
Los pensamientos?
Solución
Probar
\{(.*?)\}
The \{ will escape the "{" (which has meaning in a RegEx). The \} likewise escapes the closing } backet. The .*? will take minimal data, instead of just .* which is "greedy" and takes everything it can.
If you have assurance that your tokens will (or need to) be of a specific format, you can replace .* with an appropriate character class. For example, in the likely case you want only words, you can use (\w*) in place of the (.*?) This has the advantage that closing } characters are not part of the class being matched in the inner expression, so you don't need the ? modifier).
Otros consejos
Prueba:
\{([^}]*)\}
Esto cerrará la búsqueda dentro de llaves ortopédicas para detenerse en la llave de cierre.
Otra solución:
(?<=\{)([^\}]+)(?=\})
Esto usa un lookahead y un lookbehind para que los corchetes no se consuman en absoluto.
Las llaves tienen un significado especial en las expresiones regulares, por lo que tienes que escapar de ellos.Uso \{
y \}
para que coincida con ellos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow