1

このような入力があります

RX Only : Gi1/0/15,Gi1/0/20,Gi1/0/17

1/0/15これから、1/0/20、をキャプチャしたい1/0/17。しかし、このインプットは変化します。カンマで区切られた値が 2 つしかない場合もあれば、1 つの値が 3 つ以上ある場合もあります。

私が思いついた正規表現は、最初のグループのみをキャプチャします。非貪欲な演算子を使用すると、最後にキャプチャされます。これらすべてのグループを個別にキャプチャするには、どの正規表現を使用する必要がありますか。

使用言語はJavaになります。

4

3 に答える 3

3

Matcher.find()文字列全体に一致する正規表現を記述してグループの複雑な配置から必要なものを引き出すのではなく、興味のある部分文字列の正規表現を記述してから繰り返し使用する方が簡単なことがよくあります。

探しているものが「/」で区切られた 3 つの数字のトリプルであると仮定すると、

Pattern p = Pattern.compile("\\d+/\\d+/\\d+");
Matcher m = p.matcher(inputString);
while (m.find()) {
  // your triple is in group 0
  System.out.println(m.group(0));
}
于 2012-06-21T23:12:09.360 に答える
1

男に魚をあげる...または

http://gskinner.com/RegExr/

于 2012-06-21T23:09:34.010 に答える
0

ここで本当に正規表現を使用する必要がありますか?データ形式が非常に似ている場合は、indexOf関数を。と組み合わせて使用​​できますsubstring。キャラクターを見つけて:、次のキャラクターからコマを見つけ始める必要があります。次に、の位置を確認し\n、小さい方のインデックスを使用してサブストリングを取得します。

于 2012-06-21T23:07:47.060 に答える