emacs와 posix-egrep 같은 정규식 엔진의 차이점은 무엇입니까?

emacs와 posix-egrep 같은 정규식 엔진의 차이점은 무엇입니까?

이 명령의 GNU 구현은 다음을 find사용합니다."Emacs 정규식"기본값은 해당 -regex술어입니다. 등의 옵션으로 변경할 수 있습니다 posix-egrep.

이외의 각 엔진의 차이점은 무엇입니까?통사론?

예를 들어 성능, 단순성 측면에서 각각 다른가요?

(개인 선호도를 넘어서) 특정 시나리오에 특정 엔진을 사용해야 합니까?

버전 findfind (GNU findutils) 4.7.0-git

답변1

어려운 주제로 질문을 하셨습니다.

제가 여러분에게 추천할 수 있는 가장 좋은 자료는 전 컴퓨터 과학 교수(호주 Monash University)이자 유명한 Perl 개발자이자 저자인 Damian Conway가 쓴 "Everything You Know About Regular Expressions Is Wrong"이라는 책입니다. PDF/비디오:

https://slides.yowconference.com/yowwest2015/Conway-EverythingYouKnowAboutRegexesIsWrong.pdf

https://youtu.be/ubvSjW6Nyqk

Conway는 프레젠테이션/PDF에서 BRE, ERE, EMACS, VIM, PCRE 및 PSIX("PERL6"의 마지막 버전, 최근 Raku로 이름이 변경됨)를 포함하여 "정규식 구문의 6가지 주요 방언"이 있다고 말합니다.

예를 들어 PDF의 13페이지에서 Conway는 VIM/EMACS 편집기 방언으로 작성된 정규식을 표시합니다.

/abc\|abx/

ERE, PCRE 및 PERL6(예: RAKU)에서는 실제로 다음과 같이 작성됩니다.

/abc|abx/

다른 많은 차이점이 언급되었습니다. 자세한 내용은 프레젠테이션/PDF를 참조하세요.

경고 사항: 링크https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.htmlStackExchange에서 권위 있는 정규식 참조로 인용되었습니다. 그러나 실제로 html 페이지에는 PERL6(RAKU라고도 함) 정규식 방언이나 널리 배포된 PCRE 정규식 방언에 대한 언급이 없습니다.

관련 정보