Emacs 정규식에서 \n
는 줄 바꿈 문자와 일치하지 않습니다. \n
.
-
$
가 줄 바꿈 문자와 줄 바꿈 문자 바로 앞의 문자 사이의 위치와 일치한다고 수정 했습니까? 문자열abc\n
의 경우$
는c
와 ? -
\n
와 일치하는 정규식은 무엇입니까?
댓글
Answer
- 예.
$
는 줄 끝 뒤에 오는 줄 바꿈 문자 가 아니라 줄 끝 과 일치합니다. -
C-M-s C-q C-j
를 실행합니다.C-q
는quoted-insert
의 기본 바인딩이며 미니 버퍼에서도 작동합니다. 이 표현식은 말 그대로 개행 문자를 검색합니다 :C-j
.
댓글
- 2. 개행 문자를 Emacs 정규식에서 이스케이프 시퀀스로 표현할 수 없다는 말입니까?
- 대화식으로 또는 elisp를 통해 개행을 검색하는지 여부 (예 :
(looking-at "^J")
여기서 ^ J 는C-q C-j
에 의해 삽입 됨),C-q C-j
접근 방식은 항상 작동합니다. 그러나 동일한looking-at
\n
와 같은 elisp 함수를 사용할 때도 작동합니다.M-: (looking-at "\n") RET
는 커서가 줄의 끝에 있고 그 뒤에 줄 바꿈이 있으면 ' 참으로 평가됩니다. - 참고로,
regexp-builder
을 사용하는 경우 ' . - @Nsukami_ : CM과 Mx는 모두
[\n]
와n
와 일치합니다.
Answer
Dan이 언급했듯이, 개행과 일치하는 정규식은 개행 입니다 .
elisp에서 따옴표로 묶인 문자열의 개행을 "\n"
로 나타낼 수 있습니다. 여기에는 특별한 추가 정규 식별 구문이 없습니다. 다른 리터럴 문자와 똑같이 개행 문자 만 사용하면됩니다.
정규식을 대화식으로 입력하는 경우 그런 다음 kaushalmodi의 답변이 지적한대로 Cq Cj 로 줄 바꿈을 삽입 할 수 있습니다.
댓글
- 감사합니다! emacs (elisp가 아님)에서 Cq Cj는 줄 바꿈 문자를 일치시키는 유일한 방법입니까?
\n
' 개행 문자와 일치하지 않습니다. - 예. 더 구체적으로 말하면 개행 문자를 입력 하는 유일한 방법은 regexp는 대화식으로 (개행에 대한 regexp 이스케이프 시퀀스가 없기 때문에)
C-q C-j
는 프롬프트에서 개행을 입력하는 가장 안정적인 방법입니다.
(re-search-forward "\n")
나를 위해 잘 작동합니다.abc\r\n
대신abc\n
.\n
n
로. 내 버퍼가 기본 모드에 있습니다. 이것은 모든 텍스트에 발생하므로 새 줄 또는 문자n
가있는 모든 텍스트가 작동하는 예입니다.\r\n
–rn