回答:
マクロrx
は、他のEmacs関数に渡すことができる正規表現文字列を返します。
ELISP> (rx (one-or-more (any upper lower)))
"[[:lower:][:upper:]]+"
ELISP> (rx (one-or-more (any "A-Z" "a-z")))
"[A-Za-z]+"
それはあなたの質問に直接答えるものではありません。「これらの2つの正規表現は同一ですか?」だから、間にない大文字または小文字のための見てみましょうA
とZ
か、a
とz
。やってみようá
。
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
したがって、正規表現は同一ではありません。おそらくあなたは(rx (one-or-more (any upper lower)))
ほとんどの時間を使いたいでしょう。ほとんどの人が文字と考える文字が含まれているだけでなく、読みやすくなっていると私は思います。
[A-Z]
試合のみASCII、からの手紙で大文字、A
スルーZ
。その他の非ASCII大文字があります(英語以外の言語など)。