Я знаю основы Java, но я не слишком опытен с регулярным выражением или шаблонами, поэтому, пожалуйста, извините меня, если я спрашиваю что-то супер простое. Я пишу метод, который определяет IP-адреса и имена хостов. Я использовал regex из этого вопроса here. Проблема я встречая, однако, что предложения без символов учитываются как имена хостовОпределение IP и имени хоста
Heres мой код:
Pattern validHostname = Pattern.compile("^(([a-z]|[a-z][a-z0-9-]*[a-z0-9]).)*([a-z]|[a-z][a-z0-9-]*[a-z0-9])$",Pattern.CASE_INSENSITIVE);
Pattern validIpAddress = Pattern.compile("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])([:]\\d\\d*\\d*\\d*\\d*)*$",Pattern.CASE_INSENSITIVE);
String msg = c.getMessage();
boolean found=false;
//Randomly picks from a list to replace the detected ip/hostname
int rand=(int)(Math.random()*whitelisted.size());
String replace=whitelisted.get(rand);
Matcher matchIP = validIpAddress.matcher(msg);
Matcher matchHost = validHostname.matcher(msg);
while(matchIP.find()){
if(adreplace)
msg=msg.replace(matchIP.group(),replace);
else
msg=msg.replace(matchIP.group(),"");
found=true;
c.setMessage(msg);
}
while(matchHost.find()){
if(adreplace)
msg=msg.replace(matchHost.group(),replace);
else
msg=msg.replace(matchHost.group(),"");
found=true;
c.setMessage(msg);
}
return c;
Можете привести пример? – prasanth
Можете ли вы привести несколько примеров ввода (некоторые значения для 'msg')? –
Пример сообщения: Привет, зайдите на мой сайт www.google.com. – Zach