由空格

时间:2016-10-16 13:00:02

标签: java regex string

我的代码如下:

String realNumber = "[+-]?[\\d]+(?:[\\.][\\d]+)?";
s.next(realNumber + "[\\s]+" + realNumber);

完整的正则表达式:

[+-]?[\\d]+(?:[\\.][\\d]+)?[\\s]+[+-]?[\\d]+(?:[\\.][\\d]+)?

这不起作用。 如果我使用s.next(realNumber);,它适用于单个实数,即321.112等。空格是似乎抛出不匹配异常的部分。

我一直试图让这个过去一小时工作>。>请帮忙!

应匹配的模式:

1 1 
1.1 2.1
123 1.123
123.123 1

我已经在regex101.com上成功运行了https://regex101.com/r/fM7uA5/100,但它仍然在Java中引发异常。

2 个答案:

答案 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));