Como faço para extrair todos os {} fichas a partir de uma string usando RegEx do .net?

StackOverflow https://stackoverflow.com/questions/492060

  •  20-08-2019
  •  | 
  •  

Pergunta

Eu preciso extrair tokens que são marcados com colchetes de uma determinada cadeia.

Eu tentei usar Expresso de construir algo que irá analisar ...

-------------------------------------------------------------
"{Token1}asdasasd{Token2}asd asdacscadase dfb db {Token3}"
-------------------------------------------------------------

e produtos "token1", "Token2", "token3"

Eu tentei usar ..

-------------------------------------------------------------
({.+})
-------------------------------------------------------------

... mas que parecia coincidir com a expressão inteira.

Qualquer pensamento?

Foi útil?

Solução

Tente

\{(.*?)\}
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). 

Outras dicas

Tente:

\{([^}]*)\}

Isto irá prender o interior busca de chaves squiggly parar na chave de fechamento.

Outra solução:

(?<=\{)([^\}]+)(?=\})

Este usa uma visão antecipada e uma lookbehind assim os suportes não são consumidos em tudo.

chaves têm significado especial nas expressões regulares, então você tem que escapar deles. Use \{ e \} combiná-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top