2

我想隔离字符串中的首字母“Wrs”

"agendapunt 5.4 (GAIA) asdf <BR>    Wrs    <BR>         medegedeeld"

这是我正在使用的正则表达式:

(?<!<BR>)(\s{2,}[a-z]+\s{2,})(?=<BR>)

首字母“Wrs”必须后跟至少两个空格,然后是 html break <BR>。此外,首字母“Wrs”必须以至少两个空格开头,并且不得以 HTML<BR>标记开头。

不幸的是,在上面的例子中,首字母仍然是肯定的,即使是前面的<BR>标签。我不明白为什么,因为积极的前瞻似乎确实像我预期的那样工作。IE 当我<BR>从输入字符串中删除第二个标签或其中的一部分时,找不到匹配项。

此外,我尝试使用积极的后视而不是消极的,只是为了看看它会做什么,它也完全按照我的预期工作。在这种情况下,正面和负面的环视似乎不符合相同的规则。

知道我做错了什么吗?

4

1 回答 1

0

您正在寻找的正则表达式是

(?<!<BR>\s{2,})(?<=\s{2,})([a-z]+)(?=\s{2,}<BR>)

有一个IgnoreCase选项。

原因是我们也必须匹配空格,如果它们是允许的,在 disallowed 之后<BR>。Lookbehinds 不消耗文本,因此,在look-behind 中,我们需要在第一个消耗的字符之前检查所有前面的字符。

我希望现在更清楚了。

例子

于 2015-03-30T18:14:58.350 回答