正则表达式与整个单词和可选的第一个字符

时间:2012-03-20 16:52:47

标签: regex

假设我正在搜索整个单词“cat”,但不是“catastrophy”或“copycat”。我可以用表达式

来做到这一点
/\bcat\b/\i

如果(我正在通过推文搜索)我想要匹配“#cat”或“@cat”怎么办?

实现这一目标最干净的正则表达方式是什么?

2 个答案:

答案 0 :(得分:3)

你可以写下以下任何一个:

/(?:\b|[#@])cat\b/i

/[#@]?\bcat\b/i

cat作为整个单词匹配,或者#@cat作为整个单词。 (它们是等价的;你可以使用你认为更清楚的那个。)

(注意:你没有提到你正在使用哪个正则表达式引擎,所以上面是基于你提供的信息的有根据的猜测。)

答案 1 :(得分:1)

另一个猜测/^[@#]?\bcat\b

 echo "#cat" | perl -ne 'print if /^[@#]?\bcat\b/i'
 #cat

 echo "@cat" | perl -ne 'print if /^[@#]?\bcat\b/i'
 @cat

但不是:

 echo "~cat" | perl -ne 'print if /^[@#]?\bcat\b/i'

(注意^与其他帖子的区别。)

此致