模式匹配每一行输入

时间:2016-10-07 00:22:28

标签: c# regex

这是我的模式:

\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上测试这个。我不认为每一行都是重要的,不同的输入并不跟随每一行的匹配。我看不出有什么不同,如果匹配线和不匹配线之间有什么不同,除了说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 

1 个答案:

答案 0 :(得分:0)

因为这部分原因:\d.\w+

另一个号码的相应部分是\w+.\w+

24(来自24.000G子字符串)不适合\d,因此您应该使用\d+\w+

另一个注意事项,在此摘录中,您希望按原样使用点文字,您需要将其转义为\.,否则它将与any character匹配。

我是如何找到你的问题的:我在https://regex101.com/上打开它并从正则表达式中删除了部分,直到它匹配为止,然后立即显而易见。