gpt4 book ai didi

java - 用于解析该字符串的正则表达式或java解决方案

转载 作者:行者123 更新时间:2023-12-02 07:17:51 25 4
gpt4 key购买 nike

我输入命令show vlan并接收这种格式的数据,它是一个字符串:

switch# show vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default Active Fa1/0, Fa1/1, Fa1/4, Fa1/6
Fa1/7, Fa1/8, Fa1/9, Fa1/10
Fa1/11, Gi0
2 VLAN0002 Active
3 VLAN0003 Active Fa1/5
6 VLAN0006 Active
999 VLAN0999 Active Fa1/2, Fa1/3
switch#

我希望创建以 VLAN 编号开头并在到达 VLAN 编号时结束的新字符串。所以这里的字符串是:

(1)    1    default                          Active    Fa1/0, Fa1/1, Fa1/4, Fa1/6      
Fa1/7, Fa1/8, Fa1/9, Fa1/10
Fa1/11, Gi0
(2) 2 VLAN0002 Active
(3) 3 VLAN0003 Active Fa1/5
(4) 6 VLAN0006 Active
(5) 999 VLAN0999 Active Fa1/2, Fa1/3

我在这里该怎么做,一个正则表达式测试一个数字后跟一个空格但前面有\r 或\n ?或者在java中使用类似的.charAt(i)等?然后子串它?

我需要将每个字符串拆分为带有空格分隔符的标记。我会使用 for 循环来遍历我猜的每个字符串。

我尝试在\r\n 处分割,如果它后面跟着一个数字,这是正确的吗?

String[] parts = finalCommand.split("\r\n?=\\d");

但是不起作用?!我真的不明白为什么。

最佳答案

I tried splitting at \r\n if it is followed by a digit, was this right?

String[] parts = finalCommand.split("\r\n?=\\d");

but it doesn't work?! I really can't see why.

如果 finalCommand 是在您已经去掉前导 #switch\r\n 和尾随 \r\nswitch# 之后,如果 finalCommand 中的行确实由 \r\n 分隔,那么 - 是的,这几乎是正确的。您唯一需要更改的是,您需要编写 (?=\d) 而不是 ?=\d:括号是前瞻语法的一部分断言。 (否则 \n?= 被解释为“可选的 \n,后跟 =。)因此:

String[] parts = finalCommand.split("\r\n(?=\\d)");

关于java - 用于解析该字符串的正则表达式或java解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com