如何在文本文件的每一行中使用多个标记组删除方括号?

时间:2014-07-10 15:16:17

标签: regex sublimetext3

我无法弄清楚如何使用群组匹配进行替换。

这是我的问题:我想修改一个sql文件,以使其与mysql兼容。

该文件看起来像这样:

INSERT INTO Client ([name], [id], [company]) VALUES ('Roger', 1, '[Coca-cola]');  
INSERT INTO Client ([name], [id], [company]) VALUES ('Lisa', 2, '[Nike]');

我希望它看起来像这样:

INSERT INTO Client (name, id, company) VALUES ('Roger', 1, '[Coca-cola]');  
INSERT INTO Client (name, id, company) VALUES ('Lisa', 2, '[Nike]');

我设法写了这个正则表达式:

\\((\\[([^\\]]*)\\],? ?)+\\) VALUES

我正在使用sublimetext3。它正在使用boost正则表达式库 但是我不知道要为替换字符串写什么。

有什么想法吗?

PS:原始文件有几个不同的行,行数不同,有13000行。

2 个答案:

答案 0 :(得分:2)

我建议使用搜索字符串(?<!')\[|\](?!')和空字符串作为替换字符串。

说明:

(?<!') ...字符'的负面后瞻。

\[ ...字面字符[

| ...或表达。

\] ...字面字符]

(?!') ...字符'的前瞻性表达式。

找到一个不在单引号前面的开头方括号或一个右下角不是单引号的结束方括号。

答案 1 :(得分:2)

<强>正则表达式:

(?<=\(|, )\[|\](?=,|\))

用空字符串替换匹配的括号。

DEMO