正则表达式不匹配尾随文本

时间:2012-12-16 18:19:52

标签: java regex

当我使用时:

(Act\sNo.\s\d+\sof\s\d+,[^\Q</ref>\E])

然后匹配:

Act No. 5 of 20,

但这不是:

<ref id="" status="" href="412">Act No. 5 of 20,</ref>

哪个是正确的。

现在我想做类似的事情。当我使用时:

(Cap.\s\d+[^\Q</ref>\E])

然后匹配:

Cap. 412

这样做(即使它不应该):

<ref id="" status="" href="412">Cap. 412</ref>

但是,我注意到如果我在正则表达式和文本中,之后有一个逗号412,那么它就像上面的例子一样。总而言之,它应该不包括最后有</ref>的那些。我一直在这里测试:RegExr

3 个答案:

答案 0 :(得分:1)

不要在HTML上尝试正则表达式。首先,通过DOM函数解析HTML,然后在值上使用RegEx。

答案 1 :(得分:0)

[^\Q</ref>\E]应为(?!\Q</ref>\E)

[^\Q</ref>\E]中的字符将被单独处理

答案 2 :(得分:0)

我明白了。我只需要按如下方式更改它:(Cap.\s\d+(?!.*</ref>))

相关问题