我尝试在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")
结果很接近,但不是我需要的。如果你知道正确的答案,请帮助我。提前谢谢。
答案 0 :(得分:5)
您可以使用以下正则表达式捕获字符串的各个部分,并将其替换为第二列值
^(\(\d+,\s*.*?(\d+).*?value":).*?([,}])
并使用\1"\2"\3
作为替换部分。
<强>解释强>
^
:行首\(
:匹配(
文字\d+,\s*
:匹配数字/秒后跟逗号和任意数量的空格.*?
:匹配任何内容以满足以下条件(\d+)
:匹配一个或多个数字并将其添加到捕获的组.*?value":
:匹配到value"
([,}])
:匹配,
或}
捕获的组\1
将包含字符串value":
,"\2"
将包含双引号中第二列中的数字,\3
将包含最后一个,
1}}或}
。