是否有相当于emacs'在Python中的rx宏?

时间:2016-01-15 21:24:30

标签: python regex emacs

emacs中的rx宏(请参阅http://www.emacswiki.org/emacs/rxhttp://doc.endlessparentheses.com/Fun/rx)可以以模块化和可读的方式指定正则表达式(至少您不必注意引用问题)。例如:

(rx "a" (optional "c") "b")

结果

"ac?b"

python中有类似的东西吗?

1 个答案:

答案 0 :(得分:0)

IMO,使用LISP语法定义RegEx不是经典用法。怎么能保持这个? RegEx语言几乎是一个标准;几乎每个人都可读; rx不是。你知道Omnimark吗?它有一个漂亮但冗长的语法。它现在被遗忘了......

为此,您可以定义简单的功能,例如:

def optional(regex):
    return regex + "?"


def regex(*args):
    return "".join(args)


REGEX = regex("a", optional("b"), "c")
print(REGEX)

你会得到:

ab?c