Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
776 views
in Technique[技术] by (71.8m points)

regex - Java searching float number in String

let's say i have string like that:

eXamPLestring>1.67>>ReSTOfString

my task is to extract only 1.67 from string above.

I assume regex will be usefull, but i can't figure out how to write propper expression.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you want to extract all Int's and Float's from a String, you can follow my solution:

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;
}

If you want to parse also negative values you can add [-]? to the pattern like this:

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

And if you also want to set , as a separator you can add ,? to the pattern like this:

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

.

To test the patterns you can use this online tool: http://gskinner.com/RegExr/

Note: For this tool remember to unescape if you are trying my examples (you just need to take off one of the )


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...