我想将GigabitEthernet0/1
分割为GigabitEthernet
和0/1
。 我尝试使用,基于java中模式匹配的字符串分割问题
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
,但没有得到正确的结果。我应该使用什么样的模式。第二部分不仅是数字,还包含“/”。
在我的使用案例中,我也可能有GigabitEthernet0
,它可以拆分为GigabitEthernet
和0
。
什么是正确的正则表达式?
我想将GigabitEthernet0/1
分割为GigabitEthernet
和0/1
。 我尝试使用,基于java中模式匹配的字符串分割问题
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
,但没有得到正确的结果。我应该使用什么样的模式。第二部分不仅是数字,还包含“/”。
在我的使用案例中,我也可能有GigabitEthernet0
,它可以拆分为GigabitEthernet
和0
。
什么是正确的正则表达式?
我尝试了以下的正则表达式来分割
String gigaByteWithSlash = "GigabitEthernet0/1";
String gigaByteWithoutSlash = "GigabitEthernet0";
//String[] part = gigaByte.split("(?<=\\D)(?=\\d/\\d)");
String[] part00 = gigaByteWithSlash.split("(?<=[a-zA-Z])(?=\\d)");
System.out.println(part00[0]);
System.out.println(part00[1]);
String[] part01 = gigaByteWithoutSlash.split("(?<=[a-zA-Z])(?=\\d)");
System.out.println(part01[0]);
System.out.println(part01[1]);
打印
GigabitEthernet
0/1
GigabitEthernet
0
谢谢。但是,当我有GigabitEthernet0时,这不起作用。 Tried String [] part = gigaByte.split(“(?<= \\ D)(?= \\ d)”);但是这对GigabitEthernet0/1不起作用 – nisha
只做了编辑,适用于G..0和0/1 –
String[] part = gigaByte.split("(?<=[\\w&&\\D])(?=\\d)");
同时适用于我上述的情况。
试试这个正则表达式
([a-zA-Z]+)([0-9\/.:]+)
它适用于
GigabitEthernet0/1 --> interface on chassis/card
GigabitEthernet0/1.1 --> interface with sub interface
Serial0/1/1:1.1 --> channelized serial/POS interface
GigabitEthernet0 --> interface on chassis (In some Cisco IOS devices)
另外要注意,如果你正在处理IOS配置,你需要考虑到的子接口:'Serial0/0.14'。 – chrylis