2012-04-07 65 views
3

分隔的多个组我有一个这样的字符串:正则表达式来捕捉初始定界符

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

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

我知道我在这里可以做些什么,只要捕获组等,但在PowerShell中搞乱之后,我可以想出的最好办法是首先使用0123/与ExplicitCapture选项隔离每个配对,然后解析出标签和文字从那里。

但是,这是做了两倍的工作,完全不是超爽的haxor。什么是正则表达式的方式来做到这一点?

编辑:其实我意识到这是晚了,我误解了我的结果。上述实际上并不工作,所以现在我甚至没有一个不好的解决方案。

回答

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 

编辑: 使用正则表达式组拿到赛的部分;

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

Swithed命名组而不是编号

+0

是啊,我得到了那么远,但最终这仍然看起来像一个稍差的解决方案。您仍然必须从每行解析标签,因此每行运行正则表达式引擎两次,并选择相同的东西两次。如果使用任何管道字符,即使它们不匹配'\ | \ w + \ |'分隔符模式,它也会失败。 (尽管我可以找出一种方法来选择) – 2012-04-07 06:37:10

+0

检查编辑 – 2012-04-07 06:38:57

+0

酷 - 不应该有可能同时捕获每个标签的文本吗?除非我误解了正则表达式引擎的工作方式,否则应该在某处处理并捕获它。 – 2012-04-07 06:41:44