2016-09-16 4 views
-2

Ich habe die nächste gegebene Ausgabe:Java Regex für eine gegebene Ausgabe

1:  IP4 1.1.1.1   255.0.0.0  1.255.255.255  
127: IP6 fd55:faaf:e1ab:215d:0:0:0:103/64    
     fe80::7699:75ff:fec8:427e 
128: IP4 10.241.6.103 255.255.255.128 10.241.6.127 

ich eine Regex will, die Linien 1,2 und 3 entspricht und wird nicht dritte Zeile entsprechen.

Regex so klingen sollte:

Line von : gefolgt mit einer Zahl zwischen 0 und 999, dann einig weißen Leerzeichen gefolgt von IP4 oder IP6 Wort und dem Rest der Linie bis "\n" keine Rolle spielen beginnen muss .

+0

Sie wollen also zwei Probleme? – chrylis

+1

@chrylis wo ist mein zweites Problem? –

+0

Etwas wie '/^\ d {1,3}: \ s + IP [46] /'? – Phylogenesis

Antwort

0

Mit dem folgenden regulären Ausdruck:

\d{1,3}:\s+IP[46].*[0-9] 

Einfach erklärt:

  • \d{1,3} passt eine Zahl mit 1, 2 oder 3 Stellen (0-999)
  • : Streichhölzer : buchstäblich
  • \s+ entspricht mindestens einem Leerzeichen
  • IP[46] entspricht IP4 oder IP6. [46] entspricht einem der Zeichen in der Gruppe.
  • .*[0-9] passt alle den Rest mit einer Nummer endet.

Überprüfen Sie diese Website für die detaillierte Erklärung: . Vergessen Sie nicht, in Java die Double-Escaping \\ zu verwenden, das ist ein häufiger Fehler.

\\d{1,3}:\\s+IP[46].*[0-9] 
+0

Danke Nikolas. Dies löst mein Problem. –

+0

War der IP [46] -Teil nicht bekannt, danke fürs Teilen –