2017-06-07 5 views
2

notepad ++で正規表現を使用して文字列をキャプチャして置換しようとしましたが、結果が期待通りになりません。タスクが捕捉し配置カラム2(値0602、0164、0131、0131)。例えば、ID 9の値としてそれを挿入することであり、最終結果がでなければならないメモ帳で正規表現を使用して文字列をキャプチャし置き換える方法++

(602, '0602', '[{"id":"9","value":""},{"id":"1","value":"1"}]'), 
(1644, '0164', '[{"id":"9","value":""},{"id":"1","value":"3"}]'), 
(1311, '0131', '[{"id":"9","value":""},{"id":"1","value":"100"}]'), 
(1321, '0132', '[{"id":"9","value":""},{"id":"1","value":"150"}]') 

:データベースはこのようなフォーマットされていますこのように:

(602, '0602', '[{"id":"9","value":"0602"},{"id":"1","value":"1"}]'), 
(1644, '0164', '[{"id":"9","value":"0164"},{"id":"1","value":"3"}]'), 
(1311, '0131', '[{"id":"9","value":"0131"},{"id":"1","value":"100"}]'), 
(1321, '0132', '[{"id":"9","value":"0132"},{"id":"1","value":"150"}]') 

私はメモ帳+ +でこの正規表現を試す - 検索:

(, '.*)("id":"9","value":"") 

は交換してください:

($1)("id":"9","value":"$1") 

結果は近いですが、必要なものではありません。あなたが正しい答えを知っていれば私を助けてください。前もって感謝します。

答えて

3

あなたは文字列の部分をキャプチャし、第2の列値

^(\(\d+,\s*.*?(\d+).*?value":).*?([,}]) 

ことによってそれを交換し、交換部品として\1"\2"\3を使用する正規表現の下に使用することができます。

Live Demo on RegEx101

説明:

  1. ^:ライン
  2. \(のスタート:(リテラル
  3. \d+,\s*を一致:マッチ桁/はコンマとスペース
  4. 続いて任意の数のsは
  5. .*?:以下の条件
  6. (\d+)を満たすために何かを一致:1桁以上の数字と一致し、捕獲グループ
  7. .*?value":にそれらを追加:value"
  8. ([,}])までマッチ:,または}

のいずれかと一致捕捉されたグループ\1は、value":までの文字列を含み、"\2"は二重引用符で囲まれた第2列の数字を含み、\3 wi最後に,または}が含まれています。

+0

交換品の値の後に引用符がないので、注意してください。 – Lery

+0

@お礼ありがとうございます。私は答えを更新しました。 :) – Tushar

+0

@タシャール、解説と解説に非常に感謝します。私はすぐにそれを試みます。 –

関連する問題