Я хочу перебирать каждое совпадение, но мой код находит только 1 совпадение, получая все между первым и последним символом, найденным в шаблоне.
По сути, я хочу перебрать 3 совпадения, найденных в следующей строке:
value = "{account_id}{user_id}{someValue}";
Значение может включать любое количество этих подстрок "{str}", где str - символы верхнего или нижнего регистра и могут содержать _
.
Но он находит только 1 совпадение (целое) по следующей схеме: "{\\S+}"
foreach (Match match in Regex.Matches(value, "{\\S+}"))
{
var key = match.Value.Replace("{", "").Replace("}", "").Trim();
// do stuff with key...
}
Это имеет смысл, потому что "{" и "}" не являются символами пробела, поэтому я попытался использовать "{[a-zA-Z_]}"
, но это тоже не удалось.
foreach (Match match in Regex.Matches(value, "{[a-zA-Z_]}"))
{
var key = match.Value.Replace("{", "").Replace("}", "").Trim();
// do stuff with key...
}
Ключ переменной в цикле должен быть «account_id», затем «user_id», затем «someValue», однако это всегда «account_iduser_idsomeValue (все это).
Как я могу это исправить?
РЕДАКТИРОВАТЬ: я только что попытался добавить *
в конец шаблона, но он возвращает только 2 совпадения (пустой набор и все снова). Использование +
вместо этого вернет только 1 результат (все это, а не пустой набор), который ничем не отличается.
![enter image description here](https://i.stack.imgur.com/vPgJu.png)