代码之家  ›  专栏  ›  技术社区  ›  Martin Marconcini

查找出现N个字符的行

  •  3
  • Martin Marconcini  · 技术社区  · 15 年前

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

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

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

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

    你可以在这里看到问题所在。

    现在,如果我可以使用文本编辑器执行搜索,并且可以使用regex,Id手动删除每行的引号,那么300.000也不算太多。问题不在于违规行的数量,而在于不可能通过简单的搜索找到它们。我确定有不到500,但在一个300.000行的txt文件,你知道我的意思。

    基于此,我可以使用什么样的正则表达式来识别这些行?

    线 更多 4 引号()。

    但是我什么都想不出来(除了基础之外,我不擅长正则表达式)。

    3 回复  |  直到 15 年前
        1
  •  4
  •   David M    15 年前

    我认为你可以更直接地使用正则表达式。根据您的Regex方言,类似这样的操作应该可以:

    ^"\d+",".*".*"
    
        2
  •  7
  •   zed_0xff    15 年前

    这种模式 ^("[^"]+){4,} 包含4个以上引号的行

    你可以尝试替换 4 具有 5 或者更多,取决于你的数据。

        3
  •  1
  •   lc.    15 年前

    ^"([0-9]+)","(.*)"$ 并用 \1+++++DELIM+++++\2 .

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