我对正则表达式了解不多,我正在尝试寻找一种模式来允许我匹配版权声明,例如:
'Copyright © 2019 Company All Rights Reserved'
'© 2019 Company All Rights Reserved'
'© 2019 Company'
以及其他尽可能多的组合。
我在https://github.com/regexhq/copyright-regex/blob/master/index.js中找到了这种正则表达式模式
/(?!.*(?:\{|\}|\);))(?:(copyright)[ \t]*(?:(©|\(c\)|&#(?:169|xa9;)|©)[ \t]+)?)(?:((?:((?:(?:19|20)[0-9]{2}))[^\w\n]*)*)([ \t,\w]*))/i
我在这里https://regex101.com/尝试过,虽然它与'Copyright©2019 Company All Rights Reserved'一起使用,但不适用于'©2019 Company All Rights Reserved'。当版权一词不存在时,如何更改它使其也匹配?
答案 0 :(得分:0)
我认为可以为您的示例数据简化模式,因为它包含多余的分组结构,并且您可能会在开始时忽略否定的前瞻,即断言字符串不包含{
,}
或);
(?:copyright[ \t]*)?(?:©|\(c\)|&#(?:169|xa9;)|©)[ \t]+(?:19|20)[0-9]{2} Company(?: All Rights Reserved)?
您可以根据需要扩展模式。
这将匹配
(?:
非捕获组
copyright[ \t]*
匹配版权,将空格或制表符匹配0+次)?
关闭非捕获组并将其设置为可选(?:
非捕获组
©|\(c\)|&#(?:169|xa9;)|©
匹配交替列出的任何项目)[ \t]+
关闭非捕获组并匹配空格或制表符1+次以上(?:19|20)[0-9]{2} Company
匹配9或20,后跟2位数字(?: All Rights Reserved)?
(可选)匹配保留所有权利