代码之家  ›  专栏  ›  技术社区  ›  MichaelE

如何用abcd而不是abcd替换abc

  •  0
  • MichaelE  · 技术社区  · 6 年前

    我有一些大的文本文件,我需要做一些文本替换与全部替换。

    但是,替换的文本包含创建无限循环的原始文本。

    我需要一些方法或程序来做一个全部替换并检查替换是否已经完成。要检查找到的ABC匹配项是否已经是ABCD的一部分,并跳过该替换。

    我的示例中的abc只是一个基本情况,可以是任意字符序列,因此使用类似match whole sting的选项不起作用。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jim Flood    6 年前

    您可以使用支持 正则表达式 ,并使用 展望未来 是的。

    作为bash shell中的一个简单示例:

    echo "ABCEE" | grep -P -o "ABC(?=[^D])"
    

    输出“abc”(即找到匹配项)

    在哪里?

    echo "ABCDE" | grep -P -o "ABC(?=[^D])"
    

    不——不匹配。

    (?)=…)是指“紧跟”和“[^d]是指“除d以外的任何事物”。

    你可以使用 捕获组 它将捕获“abc”--查看正则表达式,您应该会发现很多选项。