1

例:
入力=> "Some.Random ,,Test.Data Here with price 1,23.456...,$$$"
出力一致=> 1,23.456以外のすべて

価格 は、1 つ以上の区切り文字を持つ、数字で始まり数字で終わる任意の文字列として定義されます。例えば:

    1.23,456
    123456
    1:23;456
    1.23.456

入力についてわかっていることは、任意の長さの文字列にすることができますが、内部のどこかに価格が埋め込まれていることに注意してください。

基本的に解決される問題は、システムに組み込まれたランタイム関数である String ReplaceAll を使用して、入力文字列から Price を抽出することです。したがって、入力から価格のみを返す ReplaceAll(Regex,EMPTY_String) と言うでしょう

「 [\D&&[^(?<=\d)\D(?=\d)]] 」の行で何かを試してみましたが、すべての非数字と発生しない非数字に一致しますb/wa 数字、正規表現のみを使用。

ありがとう、

4

1 に答える 1

2

この正規表現 (デモ)はトリックを行う必要があります。

^(.*?)(?:\d[0-9.,]*\d)(.*)$

Java 文字列として:

"^(.*?)(?:\\d[0-9.,]*\\d)(.*)$"  

1 番目と 2 番目のキャプチャ グループに置き換えられます。

$1$2

次のように:

String output = input.replaceAll("^(.*?)(?:\\d[0-9.,]*\\d)(.*)$", "$1$2");
于 2013-02-11T01:34:30.887 に答える