Concat множественное регулярное выражение - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать регулярное выражение, соответствующее IPv4.

У меня есть этот код

//numbers from 10 to 99
String r10to99 = "[1-9][0-9]";

//numbers from 100 to 199
String r100to199 = "1[0-9][0-9]"; 

//numbers from 200 to 255
String r200to255 = "2[0-4][0-9]|25[0-5]"; 

//combine all - numbers from 0 to 255   
String r0to255 = "[0-9]|" + r10to99 + "|" + r100to199 + "|" + r200to255; 

String regexIP = r0to255 + "[.]" + r0to255 + "[.]" + r0to255 + "[.]" + r0to255; 

System.out.println("15.15.15.15".matches(regexIP)); //->false - should be true
System.out.println("15".matches(regexIP)); //->true - should be false

Моя проблема в regexIP.Соответствует только числам от 0 до 255. Как r0to255.

Как объединить несколько r0to255 с .(dot) между ними?

r0to255.r0to255.r0to255.r0to255

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Ради полноты, конечно, Apache уже имеет решение для этого.

0 голосов
/ 26 сентября 2018

Вам необходимо сгруппировать эти шаблоны, см. Фиксированный код:

String r10to99 = "[1-9][0-9]"; //numbers from 10 to 99
String r100to199 = "1[0-9][0-9]"; //numbers from 100 to 199
String r200to255 = "2[0-4][0-9]|25[0-5]"; //numbers from 200 to 255

//combine all - numbers from 0 to 255   
String r0to255 = "(?:[0-9]|" + r10to99 + "|" + r100to199 + "|" + r200to255 + ")"; 

String regexIP = r0to255 + "(?:[.]" + r0to255 + "){3}"; 

System.out.println("15.15.15.15".matches(regexIP)); // true
System.out.println("15".matches(regexIP)); // false

См. Демонстрация Java в Интернете

Здесь "(?:[0-9]|" + r10to99 + "|" + r100to199 + "|" + r200to255 + ")" группирует r10to99, r100to199 и r200to255, так что внутри более крупного шаблона (с использованием группы без захвата ) | не разрушит весь шаблон.

Шаблон r0to255 + "(?:[.]" + r0to255 + "){3}" на самом деле является шаблоном r0to255, за которым следуют три последовательности шаблона . и r0to255.

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