我需要創建的Java模式來過濾數據,如13.6Gb,12MB,15.5Kb 我使用這些代碼java的模式過濾器
Pattern p = Pattern.compile("(\\d+)(\\w+)");
Matcher m = p.matcher(content);
String num_letter = m.group(1);
String union = m.group(2);
,但它不能檢測到十進制數,所以如何修改這個模式
我需要創建的Java模式來過濾數據,如13.6Gb,12MB,15.5Kb 我使用這些代碼java的模式過濾器
Pattern p = Pattern.compile("(\\d+)(\\w+)");
Matcher m = p.matcher(content);
String num_letter = m.group(1);
String union = m.group(2);
,但它不能檢測到十進制數,所以如何修改這個模式
嘗試增加一個條件匹配的小數部分:
Pattern.compile("(\\d+(?:[.]\\d+)?)(\\w+)");
的使用注意事項非捕獲組爲德cimal部分。
已經是在有條件的小數匹配的變化:
Pattern.compile("(\\d+\\.?\\d+?)+(\\w+)");
如果您正在使用Eclipse,我更喜歡使用的工具,如:http://myregexp.com/eclipsePlugin.html - 它使這個waaaaay容易。
目射你的,我會說類似(\\d+(\\.?(\\d+))?)
,那麼你可以看到你有多少匹配組,然後拉出你想要的。或者,使用命名的捕獲組將更具可讀性。
-Ryan
+1我建議在數字和單位之間加上'\\ s *'以確保安全。 –