这是一些输入
36 1 36 0ef6c0 id N8 Online FC F-Port 50:05:07:68:01:80:fc:ae
37 1 37 0ef680 id N8 Online FC F-Port 50:05:07:68:01:80:fa:1b
38 1 38 0ef640 id N8 Online FC F-Port 50:05:07:68:01:80:fa:2e
39 1 39 0ef600 id N8 Online FC F-Port 50:05:07:68:01:80:f9:ca
86 2 22 0eea40 -- -- Online VE VE-Port 10:00:00:05:33:ea:da:4d "replsa2v" (downstream)
87 2 23 0eea00 -- -- Offline VE Disabled (Persistent)
88 2 24 0ee9c0 -- -- Offline VE Disabled (Persistent)
此正则表达式与前4行匹配。
(?<index>\d+)\s+(?<slot>\d+)\s+(?<port>\d+)\s+(?<address>\w{6,})\s+\b(id|cu)\b\s+(?<speed>\w\d+)\s+\b(?<state>\w+)\s+(?<protocol>\S+)\s+(?<type>\S+)\s(?<extra>.*)
这个匹配最后3个
(?<index>\d+)\s+(?<slot>\d+)\s+(?<port>\d+)\s+(?<address>\w{6,})\s+[-]{2}\s+[-]{2}\s+\b(?<state>\w+)\s+(?<protocol>\S+)\s+(?<type>\S+)\s(?<extra>.*)
我想要一个匹配所有的模式。代码可以工作,但如果我做一场比赛,它会更清晰,速度更快。我能用单一模式做的最好的事情就是匹配前4行输入的前半部分和最后3行的后半部分 - 基本上是第一个' - '之前和最后一个之后的所有内容。
答案 0 :(得分:0)
这项工作对我来说:
(?<index>\d+)\s+
(?<slot>\d+)\s+
(?<port>\d+)\s+
(?<address>\w{6,})\s+
(id|cu|-{2})\s+
(?<speed>\w\d+|-{2})\s+
\b(?<state>\w+)\s+
(?<protocol>\S+)\s+
(?<type>\S+)\s
(?<extra>.*)