【发布时间】:2015-06-03 18:47:01
【问题描述】:
我想隔离字符串中的首字母“Wrs”
"agendapunt 5.4 (GAIA) asdf <BR> Wrs <BR> medegedeeld"
这是我正在使用的正则表达式:
(?<!<BR>)(\s{2,}[a-z]+\s{2,})(?=<BR>)
首字母“Wrs”必须后跟至少两个空格,然后是 html 分隔符 <BR>。
此外,首字母“Wrs”必须以至少两个空格开头,并且不能以 HTML <BR> 标记开头。
不幸的是,在上面的示例中,首字母仍然存在正匹配,即使前面有 <BR> 标记。
我不明白为什么,因为积极的前瞻似乎确实像我预期的那样工作。
IE。当我从输入字符串中删除第二个 <BR> 标记或其中的一部分时,找不到匹配项。
另外,我尝试使用积极的后视而不是消极的,只是为了看看它会做什么,它也完全按照我的预期工作。 在这种情况下,正面和负面的环视似乎不符合相同的规则。
知道我做错了什么吗?
【问题讨论】:
-
这个正则表达式能隔离 Wrs 吗?
<BR>\s*(.*?)\s*<BR> -
如果您查看匹配的值可能会很有启发性。我猜它只匹配
Wrs之前的三个 空格,而不是全部四个。实际上,这三个空格前面没有<BR>,因此它们满足您的正则表达式。负向回溯很棘手。
标签: .net regex negative-lookbehind