0

サードパーティのサービスからのデータを適切にフォーマットするために、この正規表現が十分に簡潔であるかどうか疑問に思いました。

(([\d,.]+))(1?\sR\$)

これを変更するには:

from 200 R$ to 400 R$ (32 products)

これに:

from R$ 200 to R$ 400 (32 products)

この出力をフォーマットするために、http://www.regextester.com/に示すように、Pregを使用しテキストをに置き換えています。$3 $1

これで十分ですか、それとも正規表現が適切ではありませんか?

4

2 に答える 2

2

正規表現:(\d+[.,]?\d*)(\s*)(R\$)

置換:$3$2$1


テスト入力:

from 200 R$ to 400 R$ (32 products)
from 0,200 R$ to 0.400 R$ (32 products)
from 2,00 R$ to 4.00 R$ (32 products)

テスト出力:

from R$ 200 to R$ 400 (32 products)
from R$ 0,200 to R$ 0.400 (32 products)
from R$ 2,00 to R$ 4.00 (32 products)

のように先行ゼロのない10進数も解析する場合は、.200正規表現を使用します。

(?=[.,]?\d)(\d*[.,]?\d*)(\s*)(R\$)
于 2012-08-09T12:33:46.317 に答える
0
  1. あなたは間違いなく最初のセットまたはブラケットを削除することができます

    と置き換えます$2 $1

  2. 何のために1?良いですか?最初のグループの最後に1がある場合、それはと一致します[\d,.]+。したがって、これも不要です。

  3. \sキャプチャグループに参加しないでください。結果は1対1になります。

だから私はこれがあなたの正規表現になると思います:

([\d,.]+)\s(R\$)
于 2012-08-09T12:31:04.457 に答える