2013-04-25 72 views
1

我試圖用Java從文本得到的價格,我usign這個正則表達式,但我無法擺脫113正則表達式貨幣在Java中string.replaceAll()(不是PHP,JavaScript不)

String str="jañlskd f añlksdj fñlaks: 19,05€ | jfañlskdjf: 22€ jañlsdkf dkjfls 113: 15€ jñalkdf dk añldf: añlkdsj fdlkf dlkfajs 19,05€ buy"; 
str.replaceAll("[^0-9+€|^0-9+,0-9+€|^ ]",""); 

結果是:

19,05€| 22€ 15€19,05€

我想在年底解散,沒有€號了。

我做錯了什麼? 感謝

+3

這可能與前瞻'\ d +(?:,\ d +)?(?=€)'[online demo](http://regex101.com/r/vM2bH9) – HamZa 2013-04-25 09:57:01

+0

無效的轉義序列是\ b \ t \ n \ f \ r \「\'\\)如果我用0-9嘗試而不做任何事情,則返回相同的字符串 – surfealokesea 2013-04-25 10:01:17

+0

'\ d +'='[0-9] +',I 「如果你使用的是Java試'\\ d + M不是一個Java開發人員^^ – HamZa 2013-04-25 10:03:09

回答

0

完整這個問題的答案是:

  1. 不要使用的replaceAll(在這種情況下更復雜)。
  2. 使用匹配器查找肯定匹配。

實施例:

Pattern p = Pattern.compile("[0-9]+(?:,[0-9]+)?(?=€)"); 
Matcher m=p.matcher(nodeValue); 
String res=new String(); 
while (m.find()) { 
    res+=m.group()+" "; 
} 
String prices=res.split(" "); 

由於所有(特別HAMZA)。