2013-04-25 71 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)。