正则表达式以匹配版权声明

时间:2019-03-18 17:49:20

标签: regex parsing

我对正则表达式了解不多,我正在尝试寻找一种模式来允许我匹配版权声明,例如:

'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'。当版权一词不存在时,如何更改它使其也匹配?

1 个答案:

答案 0 :(得分:0)

我认为可以为您的示例数据简化模式,因为它包含多余的分组结构,并且您可能会在开始时忽略否定的前瞻,即断言字符串不包含{});

(?:copyright[ \t]*)?(?:©|\(c\)|&#(?:169|xa9;)|©)[ \t]+(?:19|20)[0-9]{2} Company(?: All Rights Reserved)?

Regex demo

您可以根据需要扩展模式。

这将匹配

  • (?:非捕获组
    • copyright[ \t]*匹配版权,将空格或制表符匹配0+次
  • )?关闭非捕获组并将其设置为可选
  • (?:非捕获组
    • ©|\(c\)|&#(?:169|xa9;)|©匹配交替列出的任何项目
  • )[ \t]+关闭非捕获组并匹配空格或制表符1+次以上
  • (?:19|20)[0-9]{2} Company匹配9或20,后跟2位数字
  • (?: All Rights Reserved)?(可选)匹配保留所有权利