我只是在 emacs 中搜索一些具有以下模式的字符串:
^*DEFUN*event*$
所以我使用了 grep:
grep -nR "^*DEFUN*event*$" *
但没有匹配,相反有很多,例如:
DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,
怎么了?
答案1
grep
您正在使用需要正则表达式的通配符(又名“通配符”) 。然而,在正则表达式中,*
并不意味着“任何字符序列”,而是“零个或多个前一个字符”。当它用作表达式的第一个字符(或紧接在“行首”符号之后^
)时,它代表一个文字星号。
因此,您的表达式^*DEFUN*event*$
会搜索以下行:
- 从一个开始
*
- 立即继续
DEFU
- 后面跟着零个或多个
N
- 后面跟着这个词
even
- 并继续零个或多个
t
直到行尾。
您正在寻找的正则表达式是
^.*DEFUN.*event.*$
或者简而言之(正如 Stéphane Chazelas 在评论中提到的那样)
DEFUN.*event