我正在尝试隔离SQL转储文件中的特定字段,以便我可以编辑它,但我没有运气。
我正在使用的正则表达式是:
^(?:(?:'[^\r\n']*'|[^,\r\n]*),){6}('[^\r\n']*'|[^,\r\n]*)
应该抓住第七个字段并将其放在引用1中。
麻烦的是,当它在文本字段中找到逗号并将部分匹配计为允许的匹配时,这是绊脚石。
EG。 (1,'标题',1,3,'2006-09-29','逗号,我的正则表达的祸根','这是目标',2,4)匹配“我的正则表达的祸根”而不是“'这是目标'”。
答案 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的回应让我思考,因为这是所有领域的第二次交替。额外的空间迫使它使用此选项而不是引号中的选项。