连字符/短划线包含在正则表达式字边界\ b中

时间:2015-09-03 15:56:39

标签: regex grep word-boundary character-class

简单地说:

echo "xxxxx Tyyy zzzzz" | egrep "\byyy\b" 

(不匹配,这是正确的)

echo "xxxxx T-yyy zzzzz" | egrep "\byyy\b" 
xxxxx T-yyy zzzzz

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

1 个答案:

答案 0 :(得分:2)

您可以使用:

echo "xxxxx T-yyy zzzzz" | egrep "(^|[^-])\byyy\b([^-]|$)"

其中(^|[^-])\byyy\b([^-]|$)将匹配LHS上的开始或非连字符以及匹配单词yyy的RHS上的结尾或非连字符。