在同一组中获取匹配值,RegEx C#

时间:2009-02-26 09:37:26

标签: c# regex

我有一个字符串:

  

type_name“abc”< text1> text2>   
> “ab123”<文字3

现在我要提取所有以“<”开头的字母数字单词或“>”

所以我写道:

[<>]\s*(?'name'\w+)

我正在获得比赛,(例如上面我得到3场比赛,每场比赛都有一个叫名字的小组)并且在名义上我能够访问值text1,text2和text3即。但是我想让他们进入同一组,但是不同的Capture,这样我就能写出像

这样的东西
foreach(Capture C in Match.Groups["name"])

我需要它,因为我设计我的解析器来处理正则表达式的方式,它期望同一组中的不同值但不同的捕获。你能帮我解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

你真的不希望他们在同一场比赛中,因为你必须考虑你在剩下的输入中不想要的东西而且它会慢一些。你最好做这样的事情:

Regex re = new Regex(@"[<>]\s*(?<name>\w+)");
MatchCollection matches = re.Matches("type_name \"abc\" < text1 > text2 >  \"ab123\" < text3");            
foreach (Match m in matches)
{
   string name = m.Groups["name"].Value;
}