rx-to-stringregexp 형식을 인수로 사용합니다. 구문은의 인수와 동일합니다 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\\)\\_>"