我有以下字符串Java的模式重複捕獲組
52x10x20x30x40
字符串可以延長,但具有相同的圖案,並有將在它的兩邊其他字符串:例如
"Hello something 52x10x20x30x40 bla bla bla"
我想捕獲所有的2位數字。
我有以下的正則表達式
Pattern.compile("(\\d\\d)([x]\\d\\d)+");
但隨着這個表達式我只得到了以下組:
1: 52
2: x40
我有以下字符串Java的模式重複捕獲組
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")
。
如果你只是想捕獲所有兩位數的號碼,你可以使用這個表達式:
(?<!\d)(\d\d)(?!\d)
通常你只能得到一個重複捕獲組匹配的最後一個子。 (.NET正則表達式的不同在這方面。)
忘了提,但不能對雙方 – Jonas 2012-03-01 17:01:59
@Jonas其他字符串:你可以搜索'「\\ d {2}(X \\ d {2}) +「',並在匹配上使用'split()'。 – NPE 2012-03-01 17:03:49