正则表达式匹配版权声明

问题描述 投票:0回答:1

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

'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/,虽然它与'版权所有©2019公司保留所有权利',它不适用于'©2019公司保留所有权利'。当版权不存在时,如何更改它以使其匹配?

regex parsing
1个回答
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)?可选择匹配保留所有权利
© www.soinside.com 2019 - 2024. All rights reserved.