正则表达式捕获由初始分隔符分隔的多个组

时间:2012-04-07 05:55:45

标签: c# .net regex

我有一个这样的字符串:

|T1| This is some text for the first tag |T2| this is some text for the second tag

我需要解析标签和与每个标签相关联的文本。标签未提前知道,但它们由\|\w+\|分隔。

我知道我可以在这里做一些事情,只要捕获组等等但是在使用PowerShell之后,我能想到的最好的方法是首先使用\|\w+\|.*和ExplicitCapture选项隔离每个配对。然后从那里解析标签和文本。

但这样做的工作量增加了一倍,并且完全没有超酷的haxor。什么是regex-pro方法呢?

编辑:实际上我意识到已经很晚了,我误解了我的结果。以上内容实际上并不起作用,所以现在我甚至没有一个糟糕的解决方案。

1 个答案:

答案 0 :(得分:4)

\|(?<tag>\w+)\|(?<text>[^|]*)

匹配|T1| This is some text for the first tag |T2| this is some text for the second tag

 |T1| This is some text for the first tag 
 |T2| this is some text for the second tag

修改: 使用Regex Groups获取部分匹配项;

var tagName = match.Groups["tag"].Value;
var text = match.Groups["text"].Value;

转换为命名组而不是编号