emacs의 replace-regex 명령을 사용하여 값의 오랜 시퀀스를 다른 형식으로 변환하려고합니다. 추출 할 값이 9 개 이상이므로 \ 1 - \ 9 역 참조로 충분하지 않습니다.
어떻게 emacs에서 9 개 이상의 캡처 그룹을 참조 할 수 있습니까? 명명 된 그룹을 사용할 수 있습니까? 그렇다면 어떻게?
emacs의 replace-regex 명령을 사용하여 값의 오랜 시퀀스를 다른 형식으로 변환하려고합니다. 추출 할 값이 9 개 이상이므로 \ 1 - \ 9 역 참조로 충분하지 않습니다.
어떻게 emacs에서 9 개 이상의 캡처 그룹을 참조 할 수 있습니까? 명명 된 그룹을 사용할 수 있습니까? 그렇다면 어떻게?
답변:
Emacs 23부터는 Lisp 코드를 정규 표현식 대체 텍스트 . 이렇게하면 더 많은 역 참조를 사용할 수 있습니다. 함수 match-string
번호가 매겨진 역 참조를 반환합니다.
\1 … \9 \,(or (match-string 10) "")
이맥스 22 이후로 역 참조를 할 필요가없는 괄호로 둘러싸인 그룹이 정규식에 있다면, \(?:…\)
(Emacs는 이것을 수줍은 그룹 ).