2016-09-18 18 views
1

GigabitEthernet0/1GigabitEthernet0/1に分割したいと思います。 私は使用しようとしましたJavaのパターンマッチングに基づく文字列分割の問題

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); 

しかし、正しい結果を得られませんでした。どんなパターンを使うべきですか? 2番目の部分は数字だけでなく、 "/"も含まれています。

私の場合、私はGigabitEthernet0を持っていて、GigabitEthernet0に分割することもできます。

正しい正規表現は何ですか?

+0

はまた、あなたは、IOSの設定を処理している場合、アカウントのサブインターフェイスに取る必要がありますので注意して動作します

([a-zA-Z]+)([0-9\/.:]+) 

この正規表現を試してみてください: 'Serial0/0.14'。 – chrylis

答えて

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 
+0

ありがとうございます。しかし、これは私がGigabitEthernet0を持っていると動作しません。試し文字列[] part = gigaByte.split( "(?<= \\ D)(?= \\ d)");しかしこれはGigabitEthernet0/1のためには機能しません – nisha

+0

ちょうど編集をしました、G..0および0/1のために働きます –

0
String[] part = gigaByte.split("(?<=[\\w&&\\D])(?=\\d)"); 

作品を分割するために、次の正規表現を試してみました。

1

それは

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) 

のために例https://regex101.com/r/eP7kL3/1

関連する問題