Como faço para extrair todos os {} fichas a partir de uma string usando RegEx do .net?
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?
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