gpt4 book ai didi

regex - Grep不显示结果,在线正则表达式测试器可以显示结果

转载 作者:行者123 更新时间:2023-12-03 15:09:11 25 4
gpt4 key购买 nike

我对grep的行为完全没有经验。我有一堆包含以下行的XML文件:

<identifier type="abc">abc:def.ghi/g1234.ab012345</identifier>
<identifier type="abc">abc:def.ghi/g5678m.ab678901</identifier>

我想在斜杠后获得标识符部分,并使用 RegexPal构造一个正则表达式:
[a-z]\d{4}[a-z]*\.[a-z]*\d*

它突出显示了我想要的一切。完美的。现在,当我在同一个文件上运行grep时,没有任何结果。就像我说的,我对grep确实了解不多,所以我尝试了所有不同的组合。
grep [a-z]\d{4}[a-z]*\.[a-z]*\d* test.xml
grep "[a-z]\d{4}[a-z]*\.[a-z]*\d*" test.xml
egrep "[a-z]\d{4}[a-z]*\.[a-z]*\d*" test.xml
grep '[a-z]\d{4}[a-z]*\.[a-z]*\d*' test.xml
grep -E '[a-z]\d{4}[a-z]*\.[a-z]*\d*' test.xml

我究竟做错了什么?

最佳答案

您的正则表达式与输入不匹配。让我们分解一下:

  • [a-z]g
  • 匹配
  • \d{4}1234
  • 匹配
  • [a-z]*.不匹配

  • 另外,我相信 grep和家人不喜欢 \d语法。尝试 [0-9][:digit:]
    最后,当使用正则表达式时,首选 egrep而不是 grep。我不记得确切的细节,但是 egrep支持更多的正则表达式运算符。此外,在许多Shell中(包括您提到的OS X上的bash,请使用单引号而不是双引号,否则 shell 将 *扩展为当前目录中的文件列表,然后grep会看到它)(以及其他shell meta-字符也将被扩展。)Bash不会碰任何单引号。

    关于regex - Grep不显示结果,在线正则表达式测试器可以显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192761/

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