我有一个包含8.500行的SQL文件。我需要搜索/替换行的开头并替换前四个字段:
"(239, 100, NULL, NULL, " to "(239$100$NULL$NULL$"
不幸的是,有些行不使用“NULL”:
"(179, 99, 0, '', "
我从不使用字段3和4.我不知道为什么空值的写法不同,但我想有三种变体:NULL,0和''。
目的是在Excel中使用$作为分隔符。
答案 0 :(得分:4)
我假设您将在文本文件中进行替换。你可以这样做:
搜索:^\((\d+),\s*(\d+)(?:[^,]*,){3}
替换:($1$$2$NULL$NULL$
在the online demo中,请参阅底部的替换。
<强>解释强>
^
锚点断言我们位于字符串的开头\(
匹配左括号(\d+)
捕获分组,
匹配第一个逗号\s*
匹配可选的空格(\d+)
将第二组数字捕获到第2组(?:[^,]*,){3}
吃下第三个下一个逗号的任何内容$
,第2组,$
,NULL$NULL$
答案 1 :(得分:1)
以下正则表达式将匹配所有可能的组合:
^"\((\d+),\s*(\d+),\s*(NULL|\d+|''),\s+(NULL|\d+|''), "
--- --- ----------- -----------
Number Number NULL or 0 or '' NULL or 0 or ''
答案 2 :(得分:0)
Sublime Text可以为您完成而无需编写任何代码。只需将SQL粘贴到其中,按Ctrl-H,选中Regular Expresstion,然后替换
^\((\d+),\s*(\d+),[^,]+,[^,]+,
带
($1$$$2$$NULL$$NULL,
您也可以在我撰写的http://jsfiddle.net/JohnnyWorker/u6xMc/light/上对其进行测试(记得查看全局和多线),但我不建议您在此处粘贴8.500行。这个jsFiddle仅用于测试你的模式。