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 に答える