2

数値とは、二重引用符で囲まれてはならない次の JSON の値を意味します。私はこれに対する 1 回限りの回避策を書きましたが、再利用できる一般的な REReplace() は素晴らしい助けになるでしょう。

したがって、この

{
  "collapse_key" : "demo",
  "delay_while_idle" : true,
  "registration_ids" : ["xyz"],
  "data" : {
    "key1" : "value1",
    "key2" : "value2",
  },
  "time_to_live" : "3"
},

これになります:

{
  "collapse_key" : "demo",
  "delay_while_idle" : true,
  "registration_ids" : ["xyz"],
  "data" : {
    "key1" : "value1",
    "key2" : "value2",
  },
  "time_to_live" : 3
},
4

1 に答える 1

3

これは機能するはずです:

s = reReplace(s, '"([\d.-]+)"', "\1", "ALL")

(ここで、sはJSON文字列です)

  • "は二重引用符に一致します
  • ()は「これを覚えておいて、後で\1として参照できるようにします。
  • \dは「数字」を意味します
  • 。小数点を意味します
  • -マイナス記号を意味します
  • +はそれらの1つ以上を意味します

これは「..0-1」のような不正な「数値」と一致することに注意してください。ただし、要件の範囲内では、これでおそらく問題ありません。正規表現をより正確にまとめることもできますが、ここでそうすることによるメリットはおそらくありません。ここに誤検知のリスクがあるかどうか教えてください。修正できます。

または私はピーターがとにかくより良い答えを与えようとしていると想像します;-)

于 2012-11-06T09:49:41.720 に答える