我有两个字符串:


第一个字符串应与此模式匹配:“ anyDoubleValue anyDoubleValue anyDoubleValue”。请注意,这些双精度值由空格分隔。我所说的anyDoubleValue是:任何整数或十进制值。
第二个字符串应与此模式匹配:“ aSet aSet aSet”。集合“ aSet”应仅具有-1或0或1。还请注意,这些集合由空格分隔。


我已经尝试了以下方法,但是它们没有达到目的:

if(aString.matches("[\\d\\s\\d\\s\\d]"){//do foo}
if(anotherString.matches("[0-1\\s0-1\\s0-1]")){// do bar}

最佳答案

对于第一个:

匹配双精度值的模式为-"-?\\d+(.\\d+)?"。好的,这是非常普通的一个。不考虑科学计数法。

因此,要获得双值和空格的序列,请使用:

// Removed non-captured group for readability purpose
(-?\\d+(\\.\\d+)?)(?:\\s(-?\\d+(\\.\\d+)?)){2}


对于第二个:

(?:0|-?1)(\\s(?:0|-?1)){2}

10-01 08:53