Предполагая, что {A}..{Z}
- единственные необходимые совпадения, мы можем попробовать объединить Regex
и Linq, например
string text =
@"Lorem Ipsum is {C} simply dummy text {A} of the {C} printing and typesetting industry {B}.";
string[] allmatches = Regex
.Matches(text, @"\{[A-Z]\}")
.Cast<Match>()
.Select(m => m.Value)
//.Where(item => matches.Contains(item)) // uncomment to validate matches
.ToArray();
Давайте посмотрим:
Console.Write(string.Join(", ", allmatches));
Результат :
{C}, {A}, {C}, {B}
Изменить: раскомментировать .Where(...)
, если вам нужны совпадения, которые находятся в matches[]
только
Изменить 2: Если совпадают не обязательно содержать только одну букву, измените шаблон:
.Matches(text, @"\{[A-Z]+\}") // one or more capital letters
.Matches(text, @"\{[a-zA-Z]+\}") // one or more English letters
.Matches(text, @"\{\p{L}+\}") // one or more Unicode letters
.Matches(text, @"\{[^}{]+\}") // one or more characters except "{" and "}"