Respuestas:
La macro rx
devuelve cadenas regexp que se pueden pasar a otras funciones de Emacs.
ELISP> (rx (one-or-more (any upper lower)))
"[[:lower:][:upper:]]+"
ELISP> (rx (one-or-more (any "A-Z" "a-z")))
"[A-Za-z]+"
Eso no responde su pregunta directamente; empuja la pregunta a "¿son estas dos expresiones regulares idénticas?" Entonces, busquemos una letra mayúscula o minúscula que no esté entre A
y Z
, o a
y z
. Try de Let á
.
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
Entonces las expresiones regulares no son idénticas. Presumiblemente quieres usar la (rx (one-or-more (any upper lower)))
mayor parte del tiempo; no solo incluye caracteres que la mayoría de la gente piensa como letras, sino que también diría que es más legible.
[A-Z]
solo coincide con una letra mayúscula ASCII , es decir, una letra deA
hastaZ
. Hay otras letras mayúsculas que no son ASCII (p. Ej., En otros idiomas además del inglés).