查找字符串中的所有{param}

时间:2017-01-05 14:15:35

标签: c# regex string parsing

我的字符串的占位符总是以{text}

的形式出现

例如:

The {adjective} brown {animal} {action}s over the lazy {secondanimal}!

我希望有一个字符串["{adjective}","{animal}","{action}","{secondanimal}"]

的数组

我希望避免编写一个看似如下的解决方案:

Look for '{' then look for '}' then take substring.

使用正则表达式或LINQ可能更简单的方法是什么?我注意到了Split方法,但我不仅仅是一个分隔符。

1 个答案:

答案 0 :(得分:2)

假设您的{param}元素只包含单词字符,我会使用{[\w]+}来匹配它们。

string input = "The {adjective} brown {animal} {action}s over the lazy {secondanimal}!";
string[] result = Regex.Matches(input, @"{[\w]+}").Cast<Match>().Select(x => x.Value).ToArray();

{param}的定义有点宽泛。对于此示例,您还可以使用{[a-z]+}

请注意,此方法不适用于嵌套{param}