【发布时间】:2013-07-08 19:31:43
【问题描述】:
我认为有一些漂亮的 Pythonic 方式可以做到这一点,但我还没有完全弄清楚。基本上我正在寻找创建一个测试模块,并希望用户能够以一种简单的方式来定义要从中提取的字符集。我可以潜在地连接与字符串相关的各种字符集的列表,但这让我觉得这是一个非常不干净的解决方案。有什么办法可以得到正则表达式所代表的字符集?
例子:
def foo(regex_set):
re.something(re.compile(regex_set))
foo("[a-z]")
>>> abcdefghijklmnopqrstuvwxyz
编译当然是可选的,但在我看来,这就是这个函数的样子。
【问题讨论】:
-
是否保证正则表达式匹配一个代码点,或者您想要覆盖正则表达式指定语言中所有符号的最小字母表?
-
我很确定你不能这样做......至少不干净......如果它只有一个字符,你可以暴力破解它,但那太恶心了为什么不直接使用
string.ascii_lowercase等 -
您需要创建自己的解析器,并且您可能只想支持正则表达式语法的一个子集。我认为
[a-z](?<![a-hj-z])不是您想要支持的东西。 (这是[i]的一种混淆方式,以防您不认识语法。) -
然后创建您自己的语法:
az表示“a 到 z”。aa表示“只是一个”。这在任何语言中都不难做到。 -
@SlaterTyranus 有一个字母列表,每个字母旁边都有一个复选框。简单、流行、有据可查的功能。