Java Regex для соответствия действительному формату сертификата - PullRequest
1 голос
/ 13 июня 2019

Что было бы эквивалентным регулярному выражению Java для этого регулярного выражения:

^(?:(?!-{3,}(?:BEGIN|END) CERTIFICATE)[\s\S])*(-{3,}BEGIN CERTIFICATE(?:(?!-{3,}END CERTIFICATE)[\s\S])*?-{3,}END CERTIFICATE-{3,})(?![\s\S]*?-{3,}BEGIN CERTIFICATE[\s\S]+?-{3,}END CERTIFICATE[\s\S]*?$)

Цель этого регулярного выражения - проверить, является ли строка допустимым форматом сертификата SSL

Пример ввода

-----BEGIN CERTIFICATE-----
section 1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
section 2
-----END CERTIFICATE-----

Другая проблема заключается в том, что он по-прежнему не соответствует первому разделу раздел 1 и соответствует только раздел 2

1 Ответ

2 голосов
/ 13 июня 2019

Вы можете использовать это простое регулярное выражение:

(?m)^-{3,}BEGIN CERTIFICATE-{3,}$(?s).*?^-{3,}END CERTIFICATE-{3,}$

Демонстрация RegEx

Подробности RegEx:

  • (?m): установить MULTILINE модификатор для этого регулярного выражения
  • ^-{3,}BEGIN CERTIFICATE-{3,}$: сопоставить строку с BEGIN CERTIFICATE
  • (?s).*?: сопоставить данные сертификата, которые могут содержать символы новой строки
  • ^-{3,}END CERTIFICATE-{3,}$: сопоставить строку с END CERTIFICATE

Для Java используйте эту строку регулярного выражения:

final String regex = 
      "(?m)^-{3,}BEGIN CERTIFICATE-{3,}$(?s).*?^-{3,}END CERTIFICATE-{3,}$";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...