регулярное выражение Java, соответствующее IP-адресу и номеру порта как захваченные группы - PullRequest
5 голосов
/ 26 мая 2010

Может кто-нибудь сказать мне, что не так с этим регулярным выражением?

((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\:([0-9]{2,5})

для соответствия: assfasfas> 192.168.1.1:8080192.168.222.43:8286

Мне нужно 192.168.1.1 и 8080 для захвата групп

Спасибо

1 Ответ

13 голосов
/ 26 мая 2010

Если только вы действительно, действительно не должны выполнять IP-адрес проверка , я также предлагаю вам упростить регулярное выражение, потому что этот зверь слишком сложен для того, чтобы сопоставлять только IP часть "и" часть порта ". Мое предложение будет

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})

Группы 1 и 2 будут содержать IP и порт соответственно. А вышесказанное уже сложнее, чем должно быть, ИМХО даже чего-то такого простого, как этого было бы достаточно:

(\d+\.\d+\.\d+\.\d+):(\d+)

Обратите внимание, что двойная обратная косая черта обязательна для строк Java, а не для регулярных выражений, поэтому я их пропустил.

...