0

次の文字列があります

52x10x20x30x40

ストリングは拡張できますが、同じパターンで、両側に他のストリングがあります。たとえば、

"Hello something 52x10x20x30x40 bla bla bla"

2桁すべてをキャプチャしたい。

次の正規表現があります

Pattern.compile("(\\d\\d)([x]\\d\\d)+");

しかし、この正規表現では、次のグループしか取得できません。

1: 52
2: x40
4

3 に答える 3

4

なぜ単純ではないのですか:

"52x10x20x30x40".split("x");

?

両側に他の文字列が存在する可能性があることを忘れていました.

を検索して、試合"\\d{2}(x\\d{2})+"で使用できますsplit("x")

于 2012-03-01T16:58:57.873 に答える
0

正規表現は可変グループ長をサポートしていません。

代わりに分割メソッドを使用してください。たとえば、GuavaSplitter:

Iterable<String> tokens = Splitter.on('x').split(str);
于 2012-03-01T17:00:43.867 に答える
0

2 桁の数字をすべて取得したい場合は、次の式を使用できます。

(?<!\d)(\d\d)(?!\d)

通常、繰り返されるキャプチャ グループが一致する最後の部分文字列のみを取得できます。(.NET 正規表現はこの点で異なります。)

于 2012-03-01T17:04:50.623 に答える