我的代码如下:
String realNumber = "[+-]?[\\d]+(?:[\\.][\\d]+)?";
s.next(realNumber + "[\\s]+" + realNumber);
完整的正则表达式:
[+-]?[\\d]+(?:[\\.][\\d]+)?[\\s]+[+-]?[\\d]+(?:[\\.][\\d]+)?
这不起作用。
如果我使用s.next(realNumber);
,它适用于单个实数,即321.1
或12
等。空格是似乎抛出不匹配异常的部分。
我一直试图让这个过去一小时工作>。>请帮忙!
应匹配的模式:
1 1
1.1 2.1
123 1.123
123.123 1
我已经在regex101.com上成功运行了https://regex101.com/r/fM7uA5/100,但它仍然在Java中引发异常。
答案 0 :(得分:0)
编辑:在您澄清您要提取两个实数后(仅用于测试,请参阅下面的更有效的解决方案)。
要捕获和提取实数,请使用此正则表达式:"([+\-]{0,1}[\d]+(?:\.[\\d]+)*)"
要进行测试,请尝试使用此正则表达式:^(?:[+\-]{0,1}[\d]+(?:\.[\d]+)*\s*){2}$
。这可以有效地进行测试!
答案 1 :(得分:0)
所以不完全是我追求的,但Java拒绝表现。所以解决方法如下:
double x, y;
String realNumber = "[+-]?[\\d]+(?:[\\.][\\d]+)?";
x = Double.valueOf(s.next(realNumber));
y = Double.valueOf(s.next(realNumber));