连字符/破折号包含在正则表达式单词边界 \b 中

Jah*_*din 5 regex grep word-boundary character-class

简单的说:

echo "xxxxx Tyyy zzzzz" | egrep "\byyy\b" 
Run Code Online (Sandbox Code Playgroud)

(没有匹配正确的)

echo "xxxxx T-yyy zzzzz" | egrep "\byyy\b" 
xxxxx T-yyy zzzzz
Run Code Online (Sandbox Code Playgroud)

我不希望它像第二个表达式中那样匹配,请告诉我如何实现这一点,谢谢。

anu*_*ava 4

您可以使用:

echo "xxxxx T-yyy zzzzz" | grep -E "(^|[^-])\byyy\b([^-]|$)"
Run Code Online (Sandbox Code Playgroud)

其中(^|[^-])\byyy\b([^-]|$)将匹配匹配单词的左侧的开始或非连字符以及右侧的结束或非连字符yyy