Câu trả lời:
Macro rxtrả về các chuỗi regrec có thể được truyền cho các hàm Emacs khác.
ELISP> (rx (one-or-more (any upper lower)))
"[[:lower:][:upper:]]+"
ELISP> (rx (one-or-more (any "A-Z" "a-z")))
"[A-Za-z]+"
Điều đó không trả lời trực tiếp câu hỏi của bạn; nó đẩy câu hỏi đến "hai biểu thức này có giống nhau không?" Vì vậy, chúng ta hãy tìm một chữ cái viết hoa hoặc viết thường không nằm giữa Avà Z, hoặc avà z. Hãy thử xem á.
ELISP> (string-match-p (rx (one-or-more (any upper lower))) "á")
0 (#o0, #x0, ?\C-@)
ELISP> (string-match-p (rx (one-or-more (any "A-Z" "a-z"))) "á")
nil
Vì vậy, các biểu thức không giống nhau. Có lẽ bạn muốn sử dụng (rx (one-or-more (any upper lower)))hầu hết thời gian; nó không chỉ bao gồm các ký tự mà hầu hết mọi người nghĩ là chữ cái, mà tôi tranh luận cũng dễ đọc hơn.
[A-Z]chỉ khớp với một chữ cái viết hoa ASCII , nghĩa là một chữ cáiAxuyên quaZ. Có những chữ cái viết hoa không phải ASCII khác (ví dụ, bằng các ngôn ngữ khác tiếng Anh).