次の文字列があります
52x10x20x30x40
ストリングは拡張できますが、同じパターンで、両側に他のストリングがあります。たとえば、
"Hello something 52x10x20x30x40 bla bla bla"
2桁すべてをキャプチャしたい。
次の正規表現があります
Pattern.compile("(\\d\\d)([x]\\d\\d)+");
しかし、この正規表現では、次のグループしか取得できません。
1: 52
2: x40
次の文字列があります
52x10x20x30x40
ストリングは拡張できますが、同じパターンで、両側に他のストリングがあります。たとえば、
"Hello something 52x10x20x30x40 bla bla bla"
2桁すべてをキャプチャしたい。
次の正規表現があります
Pattern.compile("(\\d\\d)([x]\\d\\d)+");
しかし、この正規表現では、次のグループしか取得できません。
1: 52
2: x40
なぜ単純ではないのですか:
"52x10x20x30x40".split("x");
?
両側に他の文字列が存在する可能性があることを忘れていました.
を検索して、試合"\\d{2}(x\\d{2})+"
で使用できますsplit("x")
。
正規表現は可変グループ長をサポートしていません。
代わりに分割メソッドを使用してください。たとえば、GuavaのSplitter
:
Iterable<String> tokens = Splitter.on('x').split(str);
2 桁の数字をすべて取得したい場合は、次の式を使用できます。
(?<!\d)(\d\d)(?!\d)
通常、繰り返されるキャプチャ グループが一致する最後の部分文字列のみを取得できます。(.NET 正規表現はこの点で異なります。)