正则表达式匹配管道(|)或行尾

时间:2013-05-20 14:11:02

标签: .net regex

我有以下正则表达式匹配名称 - 值对:

^(?<NameValue>(?<Name>[A-Z][\w]*):(?<Value>[\w]*)(?=(\||\z)))+$

我试图匹配管道字符或行尾。基本上它应匹配像

这样的文本
Setting1:Value1|Setting2:Value2|Setting3:Value3

任何人都知道我做错了什么。已经有一段时间了,因为我有正则表达式让我像这样:) 更新: 结束

^(?:(?<NameValue>(?<Name>[A-Z][\w]*):(?<Value>[\w]*))(?m:\||$))+

谢谢大家!

1 个答案:

答案 0 :(得分:1)

匹配管道或行尾的正则表达式:

(?m:\||$)

m ultiline标记使$匹配行尾。

\z只匹配字符串的结尾,从不结束行。

您可以使用如下表达式:

var re = @"(?xm)
    \A
    (?:
       (?<Name>[A-Z]\w*)
       :
       (?<Value>\w*)
       (?: \| | $ )
    )+
    \z";