Regex, чтобы соответствовать заявлениям об авторских правах - PullRequest
0 голосов
/ 18 марта 2019

Я не знаю много регулярных выражений, и я пытаюсь найти шаблон, который позволяет мне соответствовать заявлениям об авторских правах, таких как:

'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 голосов
/ 18 марта 2019

Я думаю, что шаблон может быть упрощен для данных вашего примера, потому что он содержит избыточные структуры группировки, и вы можете опустить отрицательный прогноз в начале, утверждая, что строка не содержит {, } или );

(?: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)? При желании совпадение Все права защищены
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...