我想将GigabitEthernet0/1
分为GigabitEthernet
和0/1
。
我试过用,
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
但没有得到正确的结果。我应该使用什么样的模式。第二部分不仅仅是数字,它还包含&#34; /&#34;。
在我的用例中,我可能还有GigabitEthernet0
,可以将其分为GigabitEthernet
和0
。
什么是正确的正则表达式?
答案 0 :(得分:1)
试试这个正则表达式
([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)
答案 1 :(得分: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
答案 2 :(得分:0)
String[] part = gigaByte.split("(?<=[\\w&&\\D])(?=\\d)");
适用于我上述两种情况。