2

次の文字列があります。SEE ATTACHED ADDENDUM TO HUD-1194,520.07

その文字列の中には がHUD-1あり、その後に があり194,520.07ます。欲しいのは194,520.07パートです。

その値を引き出すために、次の正規表現を作成しました。

[^D\-1](?:-|\()?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?

ただし、これは引き出します:94,520.07

私はそれがこの部分に何か関係があることを知っています:[^D\-1]「食べる」ことの多くに11に表示される最初のものの後に「食べる」のを止める方法はありHUD-1ますか?

更新しました:

他のすべてのものの理由は、HUD-1 の後の値が金額である場合にのみ一致させたいからです。そして、その正規表現の残りの部分は、金額を記述するさまざまな方法をすべて決定しようとします。

4

2 に答える 2

1

次のような単純なものではないのはなぜですか。

.*HUD\-1(.*+)

わかりました、更新された質問に基づいて、より制限する必要があります。[^D\-1]just に変更してみてください(?:HUD\-1)?。価値があるのは、通貨の正規表現が緩いため、次のような入力が可能です。

001 001 .31412341234123

そこで車輪を再発明することは考えないかもしれませんが、Google 経由で通貨の RegEx をすぐに見つけることができると確信しています。それ以外の場合は、末尾に a を付けて正規表現を固定することもお勧めします$

于 2013-01-07T20:24:51.547 に答える
0

この変更により、正規表現の 2 番目の一致グループに必要な完全な数 (最初の 1 の後のすべて) が含まれるようになり、可能な HUD-1 が存在する場合は別の一致グループに入れられます。

(HUD-1)?((?:-|\()?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?) 
于 2013-01-07T20:36:52.710 に答える