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

Edu*_*rov 3 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"}]')
Run Code Online (Sandbox Code Playgroud)

任务是捕获并放置第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"}]')
Run Code Online (Sandbox Code Playgroud)

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

(, '.*)("id":"9","value":"")
Run Code Online (Sandbox Code Playgroud)

更换:

($1)("id":"9","value":"$1")
Run Code Online (Sandbox Code Playgroud)

结果很接近,但不是我需要的.如果你知道正确的答案,请帮助我.先感谢您.

Tus*_*har 6

您可以使用下面的正则表达式捕获字符串的部分,并用第二列值替换它

^(\(\d+,\s*.*?(\d+).*?value":).*?([,}])
Run Code Online (Sandbox Code Playgroud)

\1"\2"\3用作替换部件.

在RegEx101上现场演示

说明:

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

捕获的组\1将包含字符串until value":,"\2"将在第二列中\3包含双引号中的数字,并将包含最后一个,}.