Как извлечь все токены {} из строки с помощью RegEx .Net?

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

  •  20-08-2019
  •  | 
  •  

Вопрос

Мне нужно извлечь токены, помеченные фигурными скобками, из заданной строки.

Я попытался использовать Expresso для создания чего-то, что будет анализировать...

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

и создайте «Token1», «Token2», «Token3»

Я пробовал использовать..

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

...но это, казалось, соответствовало всему выражению.

Есть предположения?

Это было полезно?

Решение

Пытаться

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

Другие советы

Пытаться:

\{([^}]*)\}

Это ограничит поиск внутри волнистых скобок и остановит его на закрывающей скобке.

Другое решение:

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

При этом используется просмотр вперед и назад, поэтому скобки вообще не используются.

Фигурные скобки имеют особое значение в регулярных выражениях, поэтому их следует экранировать.Использовать \{ и \} чтобы соответствовать им.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top