我不太了解正则表达式,我正在尝试找到一种模式,允许我匹配版权声明,例如:
'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公司保留所有权利'。当版权不存在时,如何更改它以使其匹配?
我认为该模式可以简化为您的示例数据,因为它包含多余的分组结构,您可能会在开头声明该字符串不包含{
,}
或);
的情况下省略负向前瞻
(?: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)?
可选择匹配保留所有权利