反转Python中的正则表达式

我想反转一个正则表达式。即给定一个正则表达式,我想产生将匹配该正则表达式的任何字符串。

我从理论计算机科学背景使用有限状态机知道如何执行此操作,但是我只想知道是否有人已经编写了一个库来执行此操作。:)

我正在使用Python,所以我想要一个Python库。

重申一下,我只想要一个与正则表达式匹配的字符串。像 ”。” 或“。*”将使无限数量的字符串与正则表达式匹配,但我并不在乎所有选项。

我愿意这个库只对正则表达式的某些子集起作用。


守着一只汪
浏览 705回答 3
3回答

有只小跳蛙

别人也有类似的(重复?)问题在这里,我想提供一个小帮手库生成与Python随机字符串,我一直在努力。它包含一个方法,xeger()该方法允许您从正则表达式创建字符串:>>> import rstr>>> rstr.xeger(r'[A-Z]\d[A-Z] \d[A-Z]\d')u'M5R 2W4'现在,它可以与大多数基本正则表达式一起使用,但是我敢肯定它会得到改进。

GCT1015

我不知道要执行此操作的任何模块。如果您在Cookbook或PyPI中找不到类似的内容,则可以尝试使用(未记录)re.sre_parse模块滚动自己的内容。这可能有助于您入门:In [1]: import reIn [2]: a = re.sre_parse.parse("[abc]+[def]*\d?z")In [3]: aOut[3]: [('max_repeat', (1, 65535, [('in', [('literal', 97), ('literal', 98), ('literal', 99)])])), ('max_repeat', (0, 65535, [('in', [('literal', 100), ('literal', 101), ('literal', 102)])])), ('max_repeat', (0, 1, [('in', [('category', 'category_digit')])])), ('literal', 122)]In [4]: eval(str(a))Out[4]: [('max_repeat',  (1, 65535, [('in', [('literal', 97), ('literal', 98), ('literal', 99)])])), ('max_repeat',  (0,   65535,   [('in', [('literal', 100), ('literal', 101), ('literal', 102)])])), ('max_repeat', (0, 1, [('in', [('category', 'category_digit')])])), ('literal', 122)]In [5]: a.dump()max_repeat 1 65535  in    literal 97    literal 98    literal 99max_repeat 0 65535  in    literal 100    literal 101    literal 102max_repeat 0 1  in    category category_digitliteral 122
打开App,查看更多内容
随时随地看视频慕课网APP