查找具有N次出现的char的行

时间:2010-06-18 10:50:11

标签: regex

我有一个txt文件,我试图将其作为平面文件导入到SQL2008中,如下所示:

“123456”,”some text”
“543210”,”some more text”
“111223”,”other text”
etc…

该文件有超过300.000行,文本很大(通常为200-500个字符),因此手动扫描文件非常耗时且容易出错。其他类似(甚至更复杂的文件)已成功导入。

这个的问题是,“某些行”在文本中包含引号...(这来自旧的SuperBase DB的导出,它不允许您指定文本量词,我无能为力除了清除它之外的文件并尝试导入它)。

所以“冒犯”的行看起来像这样:

“123456”,”this text “contains” a quote”
“543210”,”And the “above” text is bad”
etc…

您可以在此处查看问题。

现在,如果我可以使用可以使用正则表达式的文本编辑器执行搜索,300.000不是太多,我会手动删除每行的引号。问题不在于违规行数,而是通过简单搜索找不到它们的可能性。我确定它少于500,但是将它们分散在300.000行的txt文件中,你知道我的意思。

基于此,我可以用什么来识别这些线条的最佳正则表达式?

我的第一个想法是:告诉我哪些包含更多而不是 4 引号(“)。

但我无法想出任何东西(除了基础知识,我不擅长正则表达式)。

3 个答案:

答案 0 :(得分:7)

此模式^("[^"]+){4,}将匹配“包含4个以上引号的行

您可以尝试将4替换为5或更多,具体取决于您的数据。

答案 1 :(得分:4)

我认为你可以使用正则表达式直接比你计划的更直接。根据你的正则表达方言,这样的事情应该这样做:

^"\d+",".*".*"

答案 2 :(得分:1)

您还可以使用正则表达式删除外部引号并使用更好的分隔符。例如,搜索^"([0-9]+)","(.*)"$并将其替换为\1+++++DELIM+++++\2

当然,这不能直接回答你的问题,但它可能会解决问题。

相关问题