使用正则表达式查找字符串中的所有匹配项

时间:2015-10-27 11:25:51

标签: c# regex

我的输入是

This is <a> <test> mat<ch>.

输出应为

1. <a>
2. <test>
3. <ch>

我试过这个

string input1 = "This is <a> <test> mat<ch>.";
var m1 = Regex.Matches(input1, @"<(.*)>");
var list = new List<string>();
foreach (Match match in m1)
{
    list.Add(match.Value);
}

这会将<a> <test> mat<ch>作为列表中的单个元素返回。

2 个答案:

答案 0 :(得分:14)

让你的正则表达式非贪婪

var m1 = Regex.Matches(input1, @"<(.*?)>");

或使用基于否定的正则表达式

var m1 = Regex.Matches(input1, @"<([^>]*)>");

答案 1 :(得分:3)

您可以简单地使用以下正则表达式

(<.*?>)
  //^^ Using Non greedy 

如果出现类似<test<a<b>>>

的情况

然后你可以简单地使用

(<[^>]>)

输出:

<b>