我今天Regex to match company names from copyright statements under several conditions发布了这个问题,以使公司名称脱离版权声明,而我得到的此正则表达式对于这些声明确实适用:
(?i)(?:©(?:\s*Copyright)?|Copyright(?:\s*©)?)\s*\d+(?:\s*-\s*\d+)?\s*(.*?(?=\W*All\s+rights\s+reserved)|[^.]*(?=\.)|.*)
但是,现在我遇到一个例外:公司名称在年份之前注明:
版权所有©Zinrelo,2019年。保留所有权利。
我的第一个想法是,不了解很多正则表达式,却试图建立一个替代性的正则表达式模式,第一个不起作用,我想出了这一点:
(?:©(?:\s*Copyright)?|Copyright(?:\s*©)?)\s*(.*?(\d+(?:\s*-\s*\d+)?)|.*)
尽管看起来似乎不太好,但我得到了两场比赛:“ Zinrelo,2019”和“ 2019”。有没有办法我可以更改第一个正则表达式模式以适应这种例外情况(年份在公司名称之后)?如果没有,我想出的正则表达式模式在做什么?
答案 0 :(得分:0)
您可以使用此模式来捕获和替换不需要的文本,而最终得到所需的公司名称,而这些公司可能需要其他正则表达式来修剪不需要的字符的边缘。
^.*?©|Copyright|(?:19|20)\d\d|All rights reserved.*$
^ # Start of string/line
. # Any character except line break
*? # (zero or more)(lazy)
© # "©"
| # OR
Copyright # "Copyright"
| # OR
(?: # Non Capturing Group
19 # "19"
| # OR
20 # "20"
) # End of Non Capturing Group
\d # <digit 0-9>
\d # <digit 0-9>
| # OR
All rights reserved # "All rights reserved"
. # Any character except line break
* # (zero or more)(greedy)
$ # End of string/line