我有一个字符串:
type_name“abc”< text1> text2>
> “ab123”<文字3
现在我要提取所有以“<”开头的字母数字单词或“>”
所以我写道:
[<>]\s*(?'name'\w+)
我正在获得比赛,(例如上面我得到3场比赛,每场比赛都有一个叫名字的小组)并且在名义上我能够访问值text1,text2和text3即。但是我想让他们进入同一组,但是不同的Capture,这样我就能写出像
这样的东西foreach(Capture C in Match.Groups["name"])
我需要它,因为我设计我的解析器来处理正则表达式的方式,它期望同一组中的不同值但不同的捕获。你能帮我解决这些问题吗?
答案 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;
}