条件正则表达式不起作用

时间:2015-04-10 21:41:38

标签: regex

我是条件正则表达式的新手。 我想只在前面有“Box”字样时匹配数字。这是我的正则表达式和输入

^RR\s+(?<RR>[0-9]+)(?<POBox>(?<=\sBox\s)[0-9]+).*$

应符合以下两项:

RR 1 Box 23
RR 1

不应该匹配:

RR 1 23
RR 1 OtherText 23

因此23只应在Box之前存在单词23时才匹配。

上述正则表达式不匹配:RR 1 Box 2

请帮忙。我之前没有使用过积极的观察,我很困惑。

1 个答案:

答案 0 :(得分:0)

此正则表达式符合您的输入:

^RR\s+(?<RR>[0-9]+)(?:\s*Box\s*(?<POBox>[0-9]+))?$

请参阅demo

C#正则表达式:

var reg = new Regex(@"^RR\s+(?<RR>[0-9]+)(?:\s*Box\s*(?<POBox>[0-9]+))?$");
var lst = new[] { "RR 1 Box 23", "RR 1", "RR 1 23", "RR 1 OtherText 23" };
var res = lst.Select(p => reg.IsMatch(p).ToString());

输出:

enter image description here