Java在String中搜索浮点数

Dam*_*ski 2 java regex floating-point

让我们说我有这样的字符串:

eXamPLestring> 1.67 >> ReSTOfString

我的任务是从上面的字符串中仅提取1.67.

我认为正则表达式是有用的,但我无法弄清楚如何编写propper表达式.

Rya*_*ral 7

如果你想提取所有IntFloatString,你可以按照我的解决方案:

private ArrayList<String> parseIntsAndFloats(String raw) {

    ArrayList<String> listBuffer = new ArrayList<String>();

    Pattern p = Pattern.compile("[0-9]*\\.?[0-9]+");

    Matcher m = p.matcher(raw);

    while (m.find()) {
        listBuffer.add(m.group());
    }

    return listBuffer;
}
Run Code Online (Sandbox Code Playgroud)

如果您还要解析负值,可以[-]?像这样添加到模式:

    Pattern p = Pattern.compile("[-]?[0-9]*\\.?[0-9]+");
Run Code Online (Sandbox Code Playgroud)

如果您还想设置,为分隔符,可以,?像这样添加到模式:

    Pattern p = Pattern.compile("[-]?[0-9]*\\.?,?[0-9]+");
Run Code Online (Sandbox Code Playgroud)

.

要测试模式,您可以使用此在线工具:http://gskinner.com/RegExr/

注意:对于这个工具,如果你正在尝试我的例子,请记得unescape(你只需要取下其中一个\)


Nis*_*ant 2

    String s = "eXamPLestring>1.67>>ReSTOfString>>0.99>>ahgf>>.9>>>123>>>2323.12";
    Pattern p = Pattern.compile("\\d*\\.\\d+");
    Matcher m = p.matcher(s);
    while(m.find()){
        System.out.println(">> "+ m.group());
    }
Run Code Online (Sandbox Code Playgroud)

仅提供浮动

>> 1.67
>> 0.99
>> .9
>> 2323.12
Run Code Online (Sandbox Code Playgroud)