使用正则表达式隔离SQL字段

时间:2010-04-01 22:27:07

标签: sql regex

我正在尝试隔离SQL转储文件中的特定字段,以便我可以编辑它,但我没有运气。

我正在使用的正则表达式是:

^(?:(?:'[^\r\n']*'|[^,\r\n]*),){6}('[^\r\n']*'|[^,\r\n]*)

应该抓住第七个字段并将其放在引用1中。

麻烦的是,当它在文本字段中找到逗号并将部分匹配计为允许的匹配时,这是绊脚石。

EG。 (1,'标题',1,3,'2006-09-29','逗号,我的正则表达的祸根','这是目标',2,4)匹配“我的正则表达的祸根”而不是“'这是目标'”。

5 个答案:

答案 0 :(得分:4)

将SQL加载到临时数据库中然后执行SELECT以获取该字段中的数据可能更容易。

答案 1 :(得分:2)

您是否可以控制转储文件,或者它们是历史性的还是您无法控制的?

如果你能选择更好的分类器,逗号确实是一个糟糕的选择。

答案 2 :(得分:1)

[^,\ r \ n] *,匹配

'Commas,

我建议改为[^,\ r \ n'] *。

答案 3 :(得分:0)

如果你使正则表达式更具体,我想你会有更多的运气。我没有测试过这个,但我相信这应该有效。

同样保罗建议你可以尝试使用不同的分隔符来简化这一过程。

享受!

\d{1,4}(,){1}('){1}[a-zA-Z0-9,]+('){1}\d{1,4}(,){1}\d{1,4}(,){1}('){1}[0-9-]+('){1}(,){1}('){1}[a-zA-Z0-9,]+('){1}(,){1}('){1}[a-zA-Z0-9,]+('){1}(,){1}\d{1,4}(,){1}\d{1,4}(\r\n){1}

答案 4 :(得分:0)

卫生署!

我的字段不只是用逗号分隔。他们被逗号分隔,然后是空格。

正确的RegEx是

^(?:(?:'[^\r\n']*'|[^,\r\n]*), ){6}('[^\r\n']*'|[^,\r\n]*)

现在可行。

很抱歉浪费你的时间。这是Beta的回应让我思考,因为这是所有领域的第二次交替。额外的空间迫使它使用此选项而不是引号中的选项。