2017-04-10 9 views
1

Ich versuche, ähnliche IP mit java.util.regex.Pattern in Java zu finden.finden ähnliche IP in Java mit java.util.regex.Pattern

String ipAddr = "192.168.112.33"; 
Pattern PRIVATE_ADDRESS_PATTERN = Pattern.compile("192.168.(.*?).33", Pattern.CASE_INSENSITIVE); 
String IPaddress = PRIVATE_ADDRESS_PATTERN.matcher(ipAddr).toString(); 

Es funktioniert nicht für mich. Wo ist mein Fehler?

+0

Was bedeutet 'Es funktioniert nicht? – Jens

+0

Muster passt nicht. Entschuldigung für mein schlechtes Englisch –

+0

Was ist die erwartete Ausgabe? – Jens

Antwort

0

Warum man einfach nicht machen:

String ipAddr = "192.168.112.33"; 

//If your pattern match with your String then it is correct else it is not 
if (ipAddr.matches("192\\.168\\.(.*?)\\.33")) { 
    System.out.println("CORRECT"); 
} else { 
    System.out.println("NOT CORRECT"); 
} 

Wie @lathspell sagte in dem Kommentar, den Sie den Punkt zu entkommen mit \\.

+1

Danke @YCF_L Es funktioniert –

+0

Denken Sie daran, dass "." in einer RegEx bedeutet "irgendein Zeichen". Du entkommst besser den Punkten mit "\\". – lathspell

+0

oop das ist richtig, danke ich total vergessen, dass ich es bereits bearbeiten @lathspell –

0

Einem richtigen Matcher den folgend wäre (.):

Pattern IP_PATTERN = Pattern.compile("192\\.168\\.(\\d{1,3})\\.33"); 

Auf diese Weise würden Sie nur Zahlen in dort und nicht Buchstaben zum Beispiel übereinstimmen. Gemäß weiteren Anwendungsfällen, sollen Sie Ihre Nummer Matcher verfeinern, um sicherzustellen, sie paßt nur im Bereich 0-255:

String IP_PATTERN_PART = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]?)"; 
Pattern IP_PATTERN = Pattern.compile("192\\.168\\.("+IP_PATTERN_PART+")\\.33"); 

Auch, wenn Sie sicher sind, dass Sie nie etwas anderes als eine IP bekommen (was bedeutet, keine umschließende Text), möchten Sie die Start- und End-Trennzeichen verwenden:

Pattern IP_PATTERN = Pattern.compile("^192\\.168\\.(\\d{1,3})\\.33$"); 

Dann, sobald Sie, welches Muster sich entschieden haben, zu verwenden, müssen Sie es auf diese Weise nutzen:

Matcher matcher = IP_PATTERN.matcher(candidate); 
String otherIP = null; 
if (matcher.matches()) { 
    matcher.find(); 
    otherIP = matcher.group(1); 
}