<189>131: *Jan 2 13:20:47.581: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
从上面的String中,我想拆分以下内容:
189 -between <>
Jan 2 13:20:47.581 -between * %
LINEPROTO
5
UPDOWN
FastEthernet0/1 - after string Interface
up -after String state to status
Final String数组将是:
[189],[Jan 2 13:20:47.581],[LINEPROTO],[5],[UPDOWN],[FastEthernet0/1],[up]
如何使用java regex执行此操作?
答案 0 :(得分:0)
此正则表达式将捕获您需要的组:
<(.+)>.+?[*](.+?)%(LINEPROTO)-(.+?)-(.+?):.+?Interface (.+?), changed state to (.+)
这些组(以逗号分隔):
189,Jan 2 13:20:47.581 :, LINEPROTO,5,UPDOWN,FastEthernet0 / 1,up
请注意,Jan 2 13:20:47.581:
包括&#39;:&#39;因为你表示你想要*和%之间的所有内容。
正则表达式的解释:
[*]
是&#39; *&#39;字符而不是正则表达式运算符。 另外,我认为你并不想要字面意义上的&#39; LINEPROTO&#39; (即使你的指示似乎表明你这样做)。在这种情况下,您需要:
<(.+)>.+?[*](.+?)%(.+)-(.+?)-(.+?):.+?Interface (.+?), changed state to (.+)
根据评论进行更新
更新的正则表达式是:
<(.+)>.+?[*](.+?): %(.+)-(.+?)-(.+?):.+?Interface (.+?), changed state to (.+)
团体将是: 189,Jan 2 13:20:47.581,LINEPROTO,5,UPDOWN,FastEthernet0 / 1,up
答案 1 :(得分:-1)