저는 emacs에서 다음 패턴을 가진 일부 문자열을 검색하고 있습니다.
^*DEFUN*event*$
그래서 grep을 사용했습니다.
grep -nR "^*DEFUN*event*$" *
그러나 일치하는 항목이 없고 그 대신 많은 항목이 있습니다. 예를 들면 다음과 같습니다.
DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,
뭐가 문제 야?
답변1
grep
정규식이 필요한 와일드카드("와일드카드"라고도 함)를 사용하고 있습니다. 그러나 정규식에서는 *
"모든 문자 시퀀스"가 아니라 "0개 이상의 이전 문자"를 의미합니다. 표현식의 첫 번째 문자(또는 "줄 시작" 기호 바로 뒤 ^
)로 사용되면 다음을 나타냅니다.단어별표.
따라서 표현식은 ^*DEFUN*event*$
다음 줄을 검색합니다.
- 하나로 시작하다
*
- 지금 계속
DEFU
- 그 뒤에 0개 이상이 옵니다.
N
- 그 뒤에 단어가
even
t
줄이 끝날 때까지 0개 이상 계속됩니다 .
찾고 있는 정규식은 다음과 같습니다.
^.*DEFUN.*event.*$
또는 간단히 말해서 (댓글에서 Stéphane Chazelas가 언급했듯이)
DEFUN.*event