我是条件正则表达式的新手。 我想只在前面有“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
请帮忙。我之前没有使用过积极的观察,我很困惑。
答案 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());
输出: