gpt4 book ai didi

regex - 你如何用 sed "debug"一个正则表达式?

转载 作者:IT老高 更新时间:2023-10-28 12:40:04 26 4
gpt4 key购买 nike

我正在尝试通过 sed 使用正则表达式。我已经使用 kiki 测试了我的正则表达式,这是一个用于测试 regexpd 的 gnome 应用程序,它可以在 kiki 中运行。

date: 2010-10-29 14:46:33 -0200;  author: 00000000000;  state: Exp;  lines: +5 -2;  commitid: bvEcb00aPyqal6Uu;

我想将 author: 00000000000; 替换为空。所以,我创建了正则表达式,当我在 kiki 中测试它时它可以工作:

author:\s[0-9]{11};

但是当我在 sed 中测试它时不起作用。

sed -i "s/author:\s[0-9]{11};//g" /tmp/test_regex.txt

我知道正则表达式有不同的实现,这可能是问题所在。我的问题是:我如何至少尝试“调试” sed 发生了什么?为什么它不起作用?

最佳答案

我的 sed 版本不喜欢 {11}少量。处理行:

sed 's/author: [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9];//g'

工作正常。

我调试它的方式正是我在这里所做的。我刚刚构建了一个命令:

echo 'X author: 00000000000; X' | sed ...

并一次删除更高级的正则表达式:

  • 使用 <space>而不是 \s ,没有解决。
  • 替换为 [0-9]{11}带有 11 份 [0-9] ,成功了。

几乎必须成为其中之一,因为我之前使用过您的正则表达式的所有其他功能 sed成功。

但是,事实上,这个在没有可怕的 11 个 [0-9] 副本的情况下实际工作。 ,你只需要转义大括号 [0-9]\{11\} .我不得不承认我没有尝试这样做,因为它适用于倍数,而且我通常不会太在意 sed 中的简洁性。因为我倾向于将它更多地用于快速'n'dirty工作:-)

但是大括号方法更加简洁和适应性强,知道怎么做是件好事。

关于regex - 你如何用 sed "debug"一个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com