정규 표현식 ^ 및 $ vs`및 '


16

이 매뉴얼 은 정규 표현식 특수 문자 와를 설명 합니다 . 내가 아는 대부분의 정규 표현식 방언에서와 같이 문자열의 시작 또는 끝과 일치하는 것 같습니다. 그러나 나는 또한이 있다는 것을 발견했습니다 및 문자를 사용할 수 있습니다. 여기 에있는 설명을 바탕으로 문자열의 시작 또는 끝과 일치하는 것으로 보입니다. 누군가이 특수 문자의 차이점을 설명하고 사용시기에 대한 권장 사항을 설명해 주시겠습니까?^$`'

의 값을 볼 때 auto-mode-alist문자열의 끝과 일치하도록 교환 가능하게 사용되는 것 같습니다.

(...
 ("\\.scss\\'" . scss-mode)
 ("\\.ya?ml$" . yaml-mode)
...)

2
사람들 $이 그렇게 사용하면 줄 바꿈이 포함되지 않은 파일 이름을 사용합니다. 이것은 일반적으로 (매우) 안전한 가정이지만 보장 되지는 않습니다 . \\'따라서 사용하는 것이 가장 좋습니다.
phils

답변:


14

문자열에 줄 바꿈 문자가 포함되어있을 수 있으며,이 경우 \'문자열 끝 $과 일치 하지만 줄 바꿈 문자 바로 앞과 일치합니다.

Elisp 매뉴얼을 인용하기 위해 노드 Regexp Special :

버퍼 대신 문자열을 일치시킬 때`$ '는 문자열의 끝이나 개행 문자 앞에 일치합니다.

마찬가지로 \`문자열의 시작과 일치하지만 ^개행 문자 바로 다음과 일치합니다. 다시, 매뉴얼 :

버퍼 대신 문자열을 일치시킬 때`^ '는 문자열의 시작 부분이나 줄 바꿈 문자 뒤에 일치합니다.

따라서 문자열의 경우 일반적으로 \`and \', 특히 코드에 줄 바꿈 문자가 있는지 코드를 미리 알 수없는 경우 에 사용하려고 합니다. 버퍼의 텍스트에는 일반적으로 ^및을 사용 $합니다.


6
(string-match "^foo" "foo")         ; => 0
(string-match "\\`foo" "foo")       ; => 0
(string-match "^foo" "bar\nfoo")    ; => 4
(string-match "\\`foo" "bar\nfoo")  ; => nil

(string-match "foo$" "foo")         ; => 0
(string-match "foo\\'" "foo")       ; => 0
(string-match "foo$" "foo\nbar")    ; => 0
(string-match "foo\\'" "foo\nbar")  ; => nil

^그리고 $ 의 시작과 끝을 일치시킵니다 .

\`\'시작 일치의 끝 전체 문자열 .


2
there are ` and ' characters available. [...] they seem to also match the start or end of strings

특수 문자는 다음과 같습니다 . * + ? ^ $ \ [..

대괄호 사이 []에는 다음도 특별합니다.] - ^

백틱 (`) 및 작은 따옴표 ( ')를 포함하여 많은 문자는 백 슬래시를 따를 때 특별 해집니다. 자세한 내용은 여기 를 참조하십시오.

Could someone please explain the difference between these special characters, with an example and recommendation on when to use them?

beginning of string와 사이에는 차이가 있습니다 beginning of each line in the string.

Ergoemacs의 의례. 자세한 내용은 여기를 참조 하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.