2012-11-20 68 views
1

我需要創建的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); 

,但它不能檢測到十進制數,所以如何修改這個模式

回答

1

嘗試增加一個條件匹配的小數部分:

Pattern.compile("(\\d+(?:[.]\\d+)?)(\\w+)"); 

的使用注意事項非捕獲組爲德cimal部分。

+0

+1我建議在數字和單位之間加上'\\ s *'以確保安全。 –

0

已經是在有條件的小數匹配的變化:

Pattern.compile("(\\d+\\.?\\d+?)+(\\w+)"); 
0

如果您正在使用Eclipse,我更喜歡使用的工具,如:http://myregexp.com/eclipsePlugin.html - 它使這個waaaaay容易。

目射你的,我會說類似(\\d+(\\.?(\\d+))?),那麼你可以看到你有多少匹配組,然後拉出你想要的。或者,使用命名的捕獲組將更具可讀性。

-Ryan