2016-10-16 21 views
-1

プレースホルダの値が見つからない場合は、パラメータ全体を置き換える必要があるjsonがあります。 たとえば -正規表現は、他のパターンの出現との相対的な最初の出現と一致します。

{"A":{"" B ":" {0} "、 | "C": "{1}"、| | "D": "{2}" |}};

プレースホルダ1の交換が見つからない場合、iが

を削除したいと思い、このJSONで

| "C": "{1}"、|

私はこの正規表現の使用 - (\|.*)(\{1}",\|)

以前のパラメータも一致している -

| "B": "{0}"、| | "C": "{1}"、|

希望の結果を得るために、同じものを怠けたバージョンを使用するにはどうすればよいですか? おかげ

+0

をhttp://meta.stackexchange.com/questions/66377/what-is-the-xy-problem )onスタックオーバーフロー。これはあなたの問題がXで、あなたは正しい解Yを持っていると思うので、「どのようにXを解くのですか」と尋ねるのではなく、Yについて質問します。あなたの質問、「どうやって怠惰なバージョンを使うの?」は、怠惰な量限定子が解決策であることをすでに決めていることを暗示しているようですが、そうではありません。具体的な理由がある場合(例えば、教授があなたがしなければならないと言ったように)、怠惰な量限定子が必要な場合は、その理由を説明する必要があります。そうでなければ、間違った質問をしているだけです。 – ajb

+0

申し訳ありませんあなたは正しい。私は解決策が何であるかを仮定することについて間違っていた – lost4ever

答えて

0

私が正しく問題を理解すると仮定:怠惰(または消極的)数量詞を何をしたいあなたを与えることはありません(すなわち、代わりに.*.*?を使用して)。これは、パターンマッチングがまだ左から右に向いているためです。したがって、マッチャーは最初に|を見ると、次の文字が見つかるまでできるだけ小さな文字数を見つけます。{1}それは躊躇しているので、最大ではなく、{1}を見つける前にできる最小の文字数を探します。しかし、それはまだ間違った最初の|から検索しているので、あなたを助けません。

ここでの解決方法は、最初と最後の文字以外に一致するものが|であることを認識できないようにすることです。だからではなく.*の、|を除外したパターンを使用します([XYの問題]を尋ねるときは気をつけてください。

(\|[^|]*)(\{1}",\|) 
+0

答えてくれてありがとう – lost4ever

関連する問題