我有两个字符串:
第一个字符串应与此模式匹配:“ 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}