首页 > 解决方案 > 如何排除部分正则表达式匹配?

问题描述

是否可以排除部分正则表达式匹配?以这个场景为例:

FREE SOFT FOUNDATION V2 1989 PAGE 2
STALLMANWORKS 2000 1977;PAGE 2
THE GNU PAGE 3 1977

我正在尝试匹配FREE SOFT FOUNDATION,STALLMANWORKS 2000THE GNU。这很容易,但现在我必须排除[0-9;]+\s?(PAGE)标题后面的任何组合。我尝试了否定的前瞻,但没有运气:

(?!([0-9]+\s?(PAGE)))([A-Z0-9\s]+)

标签: regexregex-lookarounds

解决方案


我不太确定这里可能需要什么,我的猜测是也许这个表达式

([\s\S].*?)\b((?:\s*\d+\s+;?|\s*\d+;)PAGE\s+\d+|\s*PAGE.*[0-9])

可以调查一下。在这里,我们会看到我们想要排除的内容,然后我们只需添加:

 ([\s\S].*?)

收集我们想要的字符。

演示


推荐阅读