如何从Java中的字符串中获取所有浮点值

时间:2017-11-23 07:58:03

标签: java arrays regex

我有字符串:条目,x:0.0 y:-0.9980941条目,x:1.0 y:-0.9686125条目,x:2.0 y:0.9044667

如何通过正则表达式获取所有浮点值: 0.0,-0.9980941,1.0,-0.9686125,2.0,0.9044667

3 个答案:

答案 0 :(得分:3)

以下是来自https://www.regular-expressions.info/floatingpoint.html

的正则表达式
  

??[ - +] [0-9] * [0-9] +

答案 1 :(得分:0)

您可以使用java.util.regex包来执行此操作。

正则表达式\ d匹配数字&相当于[0..9]。 \ d *要求匹配前面表达式的0次或更多次出现。 '?'匹配0或1次出现的点。 \ d +匹配前一个\ d的表达式的1个或多个。所以regEx一起搜索字符串中的[0..9]。[0..9]模式。

了解java_regular_expressions以了解*之间的差异。 ,?和regEx中的+。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        String str = "Entry, x: 0.0 y: -0.9980941 Entry, x: 1.0 y: -0.9686125 Entry, x: 2.0 y: 0.9044667";
        String regEx = "\\d*\\.?\\d+";

        Pattern patternObject = Pattern.compile(regEx);     
        Matcher matcher = patternObject.matcher(str);

        while (matcher.find()) {
            System.out.println(matcher.group());        
        }   

    }
}

答案 2 :(得分:0)

请注意@Ashish Mathew建议的[-+]?[0-9]*.?[0-9]+模式对我不起作用,因为.需要转义。

此外,我建议您阅读他发布的链接,以便找到最终的解决方案及其构建方式和解释。

这是我基于它的工作代码:

public static void main(String[] args) {
    String s = " Entry, x: 0.0 y: -0.9980941 Entry, x: 1.0 y: -0.9686125 Entry, x: 2.0 y: 0.9044667";
    List<String> allMatches = new ArrayList<>();
    Matcher m = Pattern.compile("[-+]?[0-9]+\\.?[0-9]*").matcher(s);
    while (m.find()) {
        allMatches.add(m.group());
    }
    // [0.0, -0.9980941, 1.0, -0.9686125, 2.0, 0.9044667]
    System.out.println(allMatches);
}