Có sự khác biệt chính giữa giữa AZ AZ và trên?


7

Tôi chỉ muốn chắc chắn rằng tôi hiểu điều này một cách chính xác.

(rx (one-or-more (any upper lower)))

bằng

(rx (one-or-more (any "A-Z" "a-z")))

Chính xác?


6
[A-Z]chỉ khớp với một chữ cái viết hoa ASCII , nghĩa là một chữ cái Axuyên qua Z. 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).
Drew

Câu trả lời:


13

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 AZ, hoặc az. 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.