gists/gists/xr-for-readable-regular-exp...

3.5 KiB

If you look for the value of org-link-any-re, you'll see this beauty:

"\\(\\[\\[\\(\\(?:[^][\\]\\|\\\\\\(?:\\\\\\\\\\)*[][]\\|\\\\+[^][]\\)+\\)]\\(?:\\[\\([^z-a]+?\\)]\\)?]\\)\\|\\(<\\(bibtex\\|elisp\\|f\\(?:ile\\(?:\\+\\(?:\\(?:emac\\|sy\\)s\\)\\)?\\|tp\\)\\|h\\(?:elp\\|ttps?\\)\\|id\\|mai\\(?:lto\\|rix\\)\\|news\\|org-ql-search\\|shell\\):\\([^>
]*\\(?:
[ 	]*[^>
][^>
]*\\)*\\)>\\)\\|\\(\\(?:\\<\\(?:\\(bibtex\\|elisp\\|f\\(?:ile\\(?:\\+\\(?:\\(?:emac\\|sy\\)s\\)\\)?\\|tp\\)\\|h\\(?:elp\\|ttps?\\)\\|id\\|mai\\(?:lto\\|rix\\)\\|news\\|org-ql-search\\|shell\\)\\):\\(\\(?:[^][
()<>]\\|(\\(?:[^][
()<>]\\|([^][
()<>]*)\\)*)\\)+\\(?:[^[:punct:]
]\\|/\\|(\\(?:[^][
()<>]\\|([^][
()<>]*)\\)*)\\)\\)\\)\\)"

xr to the rescue:

  (pp-to-string (xr org-link-any-re))
(or
 (group "[["
        (group
         (one-or-more
          (or
           (not
            (any "[\\]"))
           (seq "\\"
                (zero-or-more "\\\\")
                (any "[]"))
           (seq
            (one-or-more "\\")
            (not
             (any "[]"))))))
        "]"
        (opt "["
             (group
              (+\? anything))
             "]")
        "]")
 (group "<"
        (group
         (or "bibtex" "elisp"
             (seq "f"
                  (or
                   (seq "ile"
                        (opt "+"
                             (or "emac" "sy")
                             "s"))
                   "tp"))
             (seq "h"
                  (or "elp"
                      (seq "ttp"
                           (opt "s"))))
             "id"
             (seq "mai"
                  (or "lto" "rix"))
             "news" "org-ql-search" "shell"))
        ":"
        (group
         (zero-or-more
          (not
           (any "\n>")))
         (zero-or-more "\n"
                       (zero-or-more
                        (any "	 "))
                       (not
                        (any "	\n >"))
                       (zero-or-more
                        (not
                         (any "\n>")))))
        ">")
 (group bow
        (group
         (or "bibtex" "elisp"
             (seq "f"
                  (or
                   (seq "ile"
                        (opt "+"
                             (or "emac" "sy")
                             "s"))
                   "tp"))
             (seq "h"
                  (or "elp"
                      (seq "ttp"
                           (opt "s"))))
             "id"
             (seq "mai"
                  (or "lto" "rix"))
             "news" "org-ql-search" "shell"))
        ":"
        (group
         (one-or-more
          (or
           (not
            (any "	\n ()<>[]"))
           (seq "("
                (zero-or-more
                 (or
                  (not
                   (any "	\n ()<>[]"))
                  (seq "("
                       (zero-or-more
                        (not
                         (any "	\n ()<>[]")))
                       ")")))
                ")")))
         (or
          (not
           (any "	\n " punct))
          "/"
          (seq "("
               (zero-or-more
                (or
                 (not
                  (any "	\n ()<>[]"))
                 (seq "("
                      (zero-or-more
                       (not
                        (any "	\n ()<>[]")))
                      ")")))
               ")")))))