¿Elisp tiene literales regexp?

Pregunta:

La gran cantidad de barras invertidas que requieren mis expresiones regulares es bastante loca. ¿Elisp tiene literales regexp, entonces puedo escribir algo como

rx"some\(regexp\)"

en vez de

"some\\(regexp\\)"

Respuesta:

Una opción es usar la macro rx para construir sus expresiones usando sexps.

Su ejemplo se convierte en (rx "some" (group "regexp"))

Aquí hay un par de ejemplos más de la sección de comentarios en rx.el, para tener una idea de cómo funciona rx :

Este ^;;\\s-*\n\\|^\n convierte en

(rx (or (and line-start ";;" (0+ space) ?\n)
        (and line-start ?\n)))

Este [ \t\n]*:\\([^:]+\\|$\\) convierte en

(rx (and (zero-or-more (in " \t\n")) ":"
         (submatch (or line-end (one-or-more (not (any ?:)))))))

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım