如何在Notepad ++中使用正则表达式捕获和替换字符串

时间:2017-06-07 11:22:41

标签: regex notepad++

我尝试在notepad ++中使用正则表达式捕获和替换字符串,但结果并不像预期的那样。数据库的格式如下:

(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"}]')

任务是捕获并放置第2列(值0602,0164,0131,0131)并将其作为id 9的值插入。例如,最终结果必须如下:

(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"}]')

我在Notepad ++中试用这个正则表达式 - 搜索:

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

替换:

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

结果很接近,但不是我需要的。如果你知道正确的答案,请帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:5)

您可以使用以下正则表达式捕获字符串的各个部分,并将其替换为第二列值

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

并使用\1"\2"\3作为替换部分。

Live Demo on RegEx101

<强>解释

  1. ^:行首
  2. \(:匹配(文字
  3. \d+,\s*:匹配数字/秒后跟逗号和任意数量的空格
  4. .*?:匹配任何内容以满足以下条件
  5. (\d+):匹配一个或多个数字并将其添加到捕获的组
  6. .*?value"::匹配到value"
  7. ([,}]):匹配,}
  8. 捕获的组\1将包含字符串value":"\2"将包含双引号中第二列中的数字,\3将包含最后一个, 1}}或}