如何通过正则表达式获取字符串中的数字
实例:
- public void Test0108_03()
- {
- String input="winnt 5.1 internet winnta 5.3";//如何获得5.1
- String regex="winnta";
- double version=Double.parseDouble(getDigitAfter(input, regex));
- System.out.println("version:"+version);
- }
- public static String getDigitAfter(String input, String str)
- {
- Pattern p = Pattern.compile(str+"\\s*(\\d[\\.\\d]*\\d)");
- Matcher m = p.matcher(input);
- boolean result = m.find();
- String find_result = null;
- if (result)
- {
- find_result = m.group(1);
- }
- return find_result;
- }
伦理片 http://www.dotdy.com/
获取740981
- //"content": "????740981????????????30????????????????????????"
- String content = "????740981????????????30????????????????????????";
- Pattern p = Pattern.compile("[^\\d]+([\\d]+)[^\\d]+.*");
- Matcher m = p.matcher(content);
- boolean result = m.find();
- String find_result = null;
- if (result) {
- find_result = m.group(1);
- }
用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9])
(
[1-9] :匹配1~9的数字;
\d :匹配数字,包括0~9;
* :紧跟在 \d 之后,表明可以匹配零个及多个数字;
\. :匹配小数点;
? :紧跟在 \. 之后,表明可以匹配零个或一个小数点;
0 :匹配一个数字0;
)
其中的 [1-9]\d*\.?\d* 用以匹配诸如:1、23、34.0、56.78 之类的非负的整数和浮点数;
其中的 0\.\d*[1-9] 用以匹配诸如:0.1、0.23、0.405 之类的非负浮点数;