Как извлечь все токены {} из строки с помощью RegEx .Net?
Вопрос
Мне нужно извлечь токены, помеченные фигурными скобками, из заданной строки.
Я попытался использовать 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).
Другие советы
Пытаться:
\{([^}]*)\}
Это ограничит поиск внутри волнистых скобок и остановит его на закрывающей скобке.
Другое решение:
(?<=\{)([^\}]+)(?=\})
При этом используется просмотр вперед и назад, поэтому скобки вообще не используются.
Фигурные скобки имеют особое значение в регулярных выражениях, поэтому их следует экранировать.Использовать \{
и \}
чтобы соответствовать им.
Не связан с StackOverflow