rx-to-string
regexp 형식을 인수로 사용합니다. 구문은의 인수와 동일합니다 rx
.
(rx-to-string '(or "foo" "bar"))
"\\(?:\\(?:bar\\|foo\\)\\)"
전달하려고 한 것은 정규 표현식 양식이 아니라 정규 표현식 양식 목록입니다. 당신이 의미하는 것은 정규 표현식의 순서와 일련의 symbol-start
문자열 중 하나가 뒤에 오는 것이므로 symbol-end
순서 연산자 sequence
( seq
또는 약자 :
또는 홀수 로 약칭 할 수 있음)를 사용해야 and
합니다.
(rx-to-string `(: symbol-start (or ,@strings) symbol-end))
"\\(?:\\_<\\(?:ba[rz]\\|foo\\)\\_>\\)"
rx
사실 rx-to-string
매크로이기 때문에 컴파일 타임에 작동 하는 작은 래퍼 입니다. 이 혼동을 일으키는 것은에 여러 개의 인수를 전달 rx
하면 암시 적 sequence
연산자 가 있다는 것입니다 . 의 문서를 rx
명확히 할 수 있습니다.
(rx (: symbol-start (or "foo" "bar" "baz") symbol-end))
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"
(rx symbol-start (or "foo" "bar" "baz") symbol-end)
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"