W aplikacji otrzymuję ciągi zawierające adresy IP, ale te ciągi nie mają dokładnego formatu. Wszystko, co wiemy, to że te ciągi mogą zawierać adres IP.Wyodrębnianie adresów IP z ciągów znaków za pomocą wyrażeń regularnych
tutaj jest przykładem tego, co łańcuch może wyglądać następująco:
- "XPSPort"
- "IP_10.29.167.187"
- "10.29.166.193"
bym jak uzyskać kod Java, który wyodrębnia adres IP ciągu, jeśli jest taki lub który zwraca "", jeśli ciąg nie zawiera adresu IP.
Próbowałem ten kod, ale to nie działa:
String IPADDRESS_PATTERN =
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
Matcher matcher = pattern.matcher(ipString);
if (matcher.find()) {
return matcher.group();
}
else{
return "0.0.0.0";
}
jestem całkiem pewny użyciu RegExp jest najlepszym sposobem, aby to osiągnąć, ale nie jestem z nich bardzo dobre więc może ktoś mi pomóc znaleźć dobre RegExp?
Z góry dziękuję.
możliwe duplikat [regex adresu IP, z ciągiem] (http://stackoverflow.com/questions/8439633/regex-ip-address-from-string) – Richard
Dzięki Richard, to nie jest dokładnie duplikat, ponieważ w moim c aza IP nie zawsze jest pełne słowo, ale pomógł mi znaleźć odpowiedź. – Padrus