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?

¿Fue útil?

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
scroll top