正则表达式问题 : Match sequence only n times on a random place

标签 regex grep

我有一个正则表达式问题,例如:

  • ...AAABZBZBCCCDDD...
  • ...BZBZBDDDBZBZBCCC...

  • 我正在寻找与 BZBZB 匹配 n 次的正则表达式。在一行中。所以,如果我只想匹配序列一次,我应该只得到第一行作为输出。
    该字符串出现在文本中的随机位置。并且正则表达式应该与 grep 或 egrep 兼容...
    提前致谢。

    最佳答案

    grep '\(.*BZBZB\)\{5\}'将执行 5 次,但这将匹配出现 5 次或更多次的任何内容,因为 grep 检查一行的任何子字符串是否匹配。因为 grep 无法在其正则表达式(仅字符)中对字符串进行负匹配,所以这不能用单个命令完成,除非,例如,您知道要匹配的字符串中使用的字符不是在别处使用。

    但是,您可以在两个 grep 命令中执行此操作:
    cat temp.txt | grep '\(.*BZBZB\)\{5\}' | grep -v '\(.*BZBZB\)\{6\}'
    将返回 BZBZB 恰好出现 5 次的行。 (基本上,它进行了 5 次或更多次的正面检查,然后进行了 6 次或更多次的负面检查。)

    关于正则表达式问题 : Match sequence only n times on a random place,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630604/

    相关文章:

    java - 正则表达式从复杂字符串中提取子字符串

    java - 在 Java 中使用 RegEx,如何捕获由双竖线分隔的组(不包括双引号括起来的组)?

    regex - 从压缩文件中提取正则表达式

    regex - bash grep regex - 不包括子模式

    java - 特殊字符串的正则表达式设计

    regex - 如何从 Typescript 中的正则表达式 exec 匹配访问组?

    使用正则表达式拆分 Python 字符串

    command-line - 如何 "grep"出文件的特定行范围

    python - Pandas 相当于grep

    linux - 使用 sed 从日志文件中提取目录