1

我正在尝试从Java 中的文本中获取价格,我正在使用这个正则表达式,但我无法摆脱 113

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€ 113 15€ 19,05€

我也想取消最后没有€的数字。

我做错了什么?谢谢

4

1 回答 1

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)。

于 2013-04-25T14:44:29.617 回答