【问题标题】:grep parameter to stop after first match?grep 参数在第一次匹配后停止?
【发布时间】:2015-07-17 04:07:17
【问题描述】:

我正在 R 中处理一个大文件,我只需要特定正则表达式的第一个匹配项,但 grep 正在进一步处理,这当然需要时间。

有什么办法让它在第一次比赛后停止?

编辑:似乎不是 grep 而是 readLines 很慢。读取 120MB 文件需要 20 秒...究竟如何从 data.table 中读取它在

【问题讨论】:

  • 您可以将grep 包装到具有显式停止约束的循环中。会不会慢一些?
  • 您能给我们展示一个基准测试示例吗?我对length-1和length-40,000个字符都运行正则表达式,速度相差1-2%左右。
  • 另外,你是如何处理文件的?
  • 您能否提供一个使用grep的代码示例?

标签: regex r


【解决方案1】:

根据regular-expressions.info (see first paragraph),最新版本的 R 应该支持 正则表达式子例程,它可以有量词,因此在您的情况下,您应该能够执行以下操作:

(your-regex)(?1){1}

  • (your-regex-here) : 捕获你的正则表达式组
  • (?1) : 子程序调用捕获组 1
  • {1} 匹配子例程一次

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2018-06-27
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多