我有以下字符串
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")
在匹配项上使用。
正则表达式不支持可变组长度。
请改用 split 方法,例如Guava的Splitter
:
Iterable<String> tokens = Splitter.on('x').split(str);
如果您只想捕获所有两位数,您可以使用以下表达式:
(?<!\d)(\d\d)(?!\d)
通常您只能获取重复捕获组匹配的最后一个子字符串。(.NET 正则表达式在这方面有所不同。)