Как сопоставить список блоков CIDR, используя java регулярное выражение - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь поймать список блоков CIDR в шаблоне Cloudformation (CF использует введите здесь описание ссылки синтаксис regex.). Следующее до сих пор перехватывает 1 блок CIDR:

(^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))$)

Я пытаюсь перехватить 1 или более (через запятую, пробелы допускаются между блоками cidr), используя следующее:

(^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))$)((, *)^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))$)*

но я получаю, что входная строка не соответствует разрешенному шаблону для следующего ввода:

10.10.10.10/32, 20.20.20.20/32, 30.30.30.30/32

Как я могу сопоставить список блоков cidr, разделенных запятой (пробел принимается)? почему мое решение не работает? Можно ли повторно использовать первую подходящую группу и повторно использовать ее, поэтому мне не нужно переписывать ее дважды?

РЕДАКТИРОВАТЬ: лучшее, что я могу придумать, это:

^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))(,+\s*([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2])))*$

но он также ловит 10.10.10.10/32,, последняя запятая не должна быть поймана :(

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...