You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于grep中\s可正常匹配但\s+无法匹配的问题咨询

关于grep中\s可正常匹配但\s+无法匹配的问题咨询

嗨,我来帮你捋清楚这个问题~

问题根源在于grep默认使用的正则规则:默认情况下grep采用的是基础正则表达式(BRE),在这种模式里,+只是一个普通字符,不是用来表示“匹配一次或多次”的量词。你之前用\s能正常匹配空白字符,是因为\s在BRE里已经被识别为空白字符的转义序列,但\s+里的+会被当成字面意义的加号来匹配——相当于你要找的是“空白字符后面跟着加号”的场景,这显然和原文本不匹配,所以模式就失效了。

给你两个可行的解决办法:

  • 第一种:切换到扩展正则表达式模式,给grep加上-E参数(或者直接用egrep,它和grep -E完全等价),这样+就会被当作量词生效。修改后的命令是:
    echo "\"Using Android 10\"" | grep -E "\".*\sAndroid\s+.*\""
    
  • 第二种:如果不想用扩展正则,就在基础正则里把+转义成\+,让它具备量词的功能。命令改成:
    echo "\"Using Android 10\"" | grep "\".*\sAndroid\s\+.*\""
    

试试这两种方式,都能正常匹配到"Using Android 10"的结果哦。

备注:内容来源于stack exchange,提问作者Alexey Starinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:44:28