python 中是否有相当于 emacs 的 rx 宏?

Dir*_*ann 5 python regex emacs

emacs 中的 rx 宏(参见http://www.emacswiki.org/emacs/rxhttp://doc.endlessparentheses.com/Fun/rx)使得以模块化和可读的方式指定正则表达式成为可能(位于至少你不必关心引用问题)。例如:

(rx "a" (optional "c") "b")
Run Code Online (Sandbox Code Playgroud)

结果是

"ac?b"
Run Code Online (Sandbox Code Playgroud)

python中有类似的东西吗?

Lau*_*RTE 0

IMO,使用 LISP 语法来定义 RegEx 并不是经典用法。怎样才能维持这一点呢?RegEx 语言几乎是一个标准;几乎每个人都可以阅读;rx不是。你知道吗Omnimark?它有一个漂亮但冗长的语法。现在忘记了\xe2\x80\xa6

\n\n

为此,您可以定义简单的函数,例如:

\n\n
def optional(regex):\n    return regex + "?"\n\n\ndef regex(*args):\n    return "".join(args)\n\n\nREGEX = regex("a", optional("b"), "c")\nprint(REGEX)\n
Run Code Online (Sandbox Code Playgroud)\n\n

你会得到:

\n\n
ab?c\n
Run Code Online (Sandbox Code Playgroud)\n