2016-10-07 11 views
0

のあらゆるその他のラインをマッチングされ、私が持っている模様である。ここではパターンは、ここで入力

\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)? 

が入力されています。 '*'は入力の一部ではなく、単に一致するものを指定しているだけです。私はRegExStorm.netでこれをテストしています。私は他のすべての行はそれ自身では重要ではないと考えていますが、入力ごとに1行おきに一致させるわけではありません。私は何が違うのか分かりません。一致した行と一致していない行の間に、QOSという行を除いては一致しますが、一致がまだそこで成功しなければならない場合は、それを放棄します。このため一部のだ

* 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 

答えて

0

\d.\w+

他の番号に対応する部分は、(24.000G部分文字列から)\w+.\w+

24ある\dに適合していないので、あなたはどちらか\d+を使用する必要がありますまたは\w+

この抜粋では、ドットリテラルをそのまま使用したい場合は、\.としてエスケープする必要があります。それ以外の場合はany characterと一致します。

問題を見つけた方法:https://regex101.com/で開き、一致するまで正規表現から部分を削除したところすぐに分かりました。

+0

これは便利なサイトです。私はそれをブックマークしました。私は名前付きグループを扱うのが好きです。私は大手の\ s +がマッチのいくつかを台無しにしていたことが分かりました。 –

+0

「\ s +」の先頭にマッチが絡んでいるのはなぜですか? RegExはその前にあるスペースにマッチさせようとしていますか? –

+0

@DavidGreenは、問題を再現する最小限の例を作成します。例が小さくなればなるほど、自己に対処する/説明するのが簡単になります。 – zerkms

関連する問題