Regex.matches Найти наименьшее количество символов на каждое найденоC#

Место общения программистов C#
Anonymous
Regex.matches Найти наименьшее количество символов на каждое найдено

Сообщение Anonymous »

Я хочу итерацию по каждому матчу, но мой код находит только 1 матч, получив все между первым и последним персонажем, чтобы найти в шаблоне.

Код: Выделить всё

value = "{account_id}{user_id}{someValue}";
Value could include any number of these "{str}" substrings where str is upper or lower case characters and can contain _.

But it only finds 1 match (the whole thing) using the following pattern: "{\\S+}"

foreach (Match match in Regex.Matches(value, "{\\S+}"))
{
var key = match.Value.Replace("{", "").Replace("}", "").Trim();
// do stuff with key...
}
< /code>

Это имеет смысл, потому что «{» и «}»-это не белый космический символ, поэтому я попытался использовать «{[a-za-z _]}» < /code> Но это тоже не удается.foreach (Match match in Regex.Matches(value, "{[a-zA-Z_]}"))
{
var key = match.Value.Replace("{", "").Replace("}", "").Trim();
// do stuff with key...
}
< /code>

Ключ переменной в цикле должен быть «Account_ID», затем «user_id», затем «SomeValue», однако это всегда «Account_IDUSER_IDSOMEVALUE (все это). < /p>

Как я могу это исправить? шаблона, но он возвращает только 2 совпадения (пустой набор и все это снова).>

Подробнее здесь: https://stackoverflow.com/questions/566 ... atch-found

Вернуться в «C#»