2016-10-07 3 views
0

Hier ist das Muster, das ich habe:Muster Passende Jede zweite Zeile von Eingangs

\s+\d+:\s+(?<local>\d+)[-][>]\s+?(?<remote>\d+)\s+(?<wwn>..:..:..:..:..:..:..:..)\s+\d+\s+(?<name>\w+)\s+[s][p]:\s+\w+.\w+\s+\w+[:]\s+\d.\w+\s+(?<trunk>TRUNK)? 

Hier ist der Eingang. Das '*' ist nicht Teil der Eingabe, es bestimmt nur, was zusammenpasst. Ich teste das bei RegExStorm.net. Ich denke nicht, dass jede andere Zeile für sich genommen von Bedeutung ist, andere Eingaben folgten nicht, wenn alle anderen Zeilen übereinstimmten. Ich kann nicht sehen, was anders ist, wenn überhaupt zwischen den übereinstimmenden und nicht übereinstimmenden Zeilen außer der Zeile, die QOS sagt, aber das Spiel sollte dort immer noch erfolgreich sein, würde es das einfach wegwerfen.

* 1: 0-> 11 10:00:00:05:1e:89:ed:8c 14 SAN009B   sp: 8.000G bw: 8.000G 
    2: 23-> 2 50:00:51:e8:b9:1b:ae:01 3 fcr_fd_3  sp: 8.000G bw: 8.000G 
* 3: 24-> 22 10:00:00:05:1e:36:5b:ea 1 SAN001B   sp: 4.000G bw: 4.000G TRUNK 
    4: 38-> 38 10:00:00:05:1e:e2:45:00 9 SAN004B   sp: 8.000G bw: 24.000G TRUNK QOS 
*5: 48-> 15 10:00:00:05:1e:89:ed:8c 14 SAN009B   sp: 8.000G bw: 8.000G 
6: 49-> 10 10:00:00:05:1e:87:5a:e4 13 SAN013B   sp: 8.000G bw: 8.000G 
*7: 56-> 3 10:00:00:05:1e:84:15:dc 11 SAN011B   sp: 8.000G bw: 8.000G 
8: 64-> 16 10:00:00:05:1e:89:ed:8c 14 SAN009B   sp: 8.000G bw: 8.000G 
* 9: 65-> 18 10:00:00:05:1e:87:5a:e4 13 SAN013B   sp: 8.000G bw: 8.000G 
10: 72-> 63 10:00:00:05:1e:84:15:dc 11 SAN011B   sp: 8.000G bw: 8.000G 
*11: 87-> 27 50:00:51:e8:b9:1b:ae:01 3 fcr_fd_3  sp: 8.000G bw: 8.000G 

Antwort

0

, dass wegen dieses Teils ist: \d.\w+

Der entsprechende Teil für die andere Zahl ist \w+.\w+

24 (vom 24.000G String) nicht die \d passen, so dass Sie sollten entweder \d+ verwenden oder \w+.

Ein weiterer Hinweis, in diesem Auszug möchten Sie das Punktliteral verwenden, wie es ist, müssen Sie es als \. zu entkommen, da es sonst any character entspricht.

Wie ich Ihr Problem gefunden habe: Ich öffnete es auf https://regex101.com/ und entfernte die Teile aus dem regulären Ausdruck, bis es übereinstimmte, dann war es sofort offensichtlich.

+0

Das ist eine praktische Seite. Ich habe es vorgemerkt. Ich mag es, dass es benannte Gruppen behandelt. Ich konnte herausfinden, dass das führende \ s + einige der Matches durcheinander brachte. –

+0

Ich würde gerne wissen, warum dieses führende '\ s +' die Matches vermasselt hat. RegEx versucht, die Leerzeichen zu finden, die vor dem fallen? –

+0

@DavidGreen Erstellen Sie ein minimales Beispiel, das das Problem reproduziert. Je kleiner das Beispiel ist, desto einfacher ist es, sich damit auseinander zu setzen. – zerkms

Verwandte Themen