假设我正在搜索整个单词“cat”,但不是“catastrophy”或“copycat”。我可以用表达式
来做到这一点/\bcat\b/\i
如果(我正在通过推文搜索)我想要匹配“#cat”或“@cat”怎么办?
实现这一目标最干净的正则表达方式是什么?
答案 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'
(注意^与其他帖子的区别。)
此致