gpt4 book ai didi

regex - 为什么这个正则表达式不适用于 grep?

转载 作者:可可西里 更新时间:2023-11-01 11:46:09 24 4
gpt4 key购买 nike

我正在尝试从响应中删除“数据包编号 624 不匹配”,因此显而易见的尝试是

cat somefile.txt | grep -v "Packet number \d+ doesn't match"

如果我删除 -v,只是为了测试,那么它什么也不会返回。所以也许命令行首先用 \d+ 做一些事情。所以我尝试了各种组合,例如 \\d+\\d\+\\\\d+\\\\d\+ [0-9]+ [0-9]\+。答对了!!最后一个有效。有人可以解释这里发生了什么吗?如果这是通过命令行修改的,为什么 echo "\d+" 仍然返回 \d+

最佳答案

默认情况下,grep 使用基本正则表达式\d 是( PCRE ) 语法。它不受支持,因此您需要使用 ( [0-9] ) 或 ( [[:digit:]] ),或者使用 grep 选项 -P

为什么 [0-9]+ 不起作用?

  • BRE , 像 + 这样的元字符失去了意义,需要转义。

您可以使用以下方法之一解决此问题:

grep -v "Packet number [0-9]\+ doesn't match"

grep -v "Packet number [[:digit:]]\+ doesn't match"

关于regex - 为什么这个正则表达式不适用于 grep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254536/

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