我需要创建java模式来过滤数据,如13.6Gb,12MB,15.5Kb 我使用那些代码
Pattern p = Pattern.compile("(\\d+)(\\w+)");
Matcher m = p.matcher(content);
String num_letter = m.group(1);
String union = m.group(2);
但它无法检测十进制数,因此如何修改此模式
答案 0 :(得分:1)
尝试为小数部分添加条件匹配:
Pattern.compile("(\\d+(?:[.]\\d+)?)(\\w+)");
请注意非捕获组用于小数部分。
答案 1 :(得分:0)
有条件十进制匹配的变体:
Pattern.compile("(\\d+\\.?\\d+?)+(\\w+)");
答案 2 :(得分:0)
如果你正在使用eclipse,我更喜欢使用像http://myregexp.com/eclipsePlugin.html这样的工具 - 这样可以轻松实现这一点。
注视你的,我会说像(\\d+(\\.?(\\d+))?)
之类的东西,然后你可以看到你有多少匹配组,然后再把你想要的那些组合起来。或者,使用命名捕获组将更具可读性。
-Ryan