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

正则表达式不支持可变组长度。

请改用 split 方法,例如GuavaSplitter

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

如果您只想捕获所有两位数,您可以使用以下表达式:

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

通常您只能获取重复捕获组匹配的最后一个子字符串。(.NET 正则表达式在这方面有所不同。)

于 2012-03-01T17:04:50.623 回答