生成与Python中的正则表达式匹配的字符串

生成与Python中的正则表达式匹配的字符串,python,regex,stringbuilder,Python,Regex,Stringbuilder,可能重复: 我想我遇到了一个听起来比实际情况更容易的问题。。。我不太确定。我想定义一个正则表达式,并且我想构建一些与之匹配的字符串 我是否可以导入任何具有此功能的模块?最好不是使用re.search或re.match的暴力方法。必须有一种更优雅的方式来做到这一点 对于某些正则表达式,可能的字符串列表可以是无限的。例如: a* 包括 a aa aaa 因此,没有办法为给定的正则表达式生成所有字符串。我一直在开发一个小助手库 它包括一个方法,xeger(),允许您从正则表达式创建字符串: &g

可能重复:

我想我遇到了一个听起来比实际情况更容易的问题。。。我不太确定。我想定义一个正则表达式,并且我想构建一些与之匹配的字符串


我是否可以导入任何具有此功能的模块?最好不是使用
re.search
re.match
的暴力方法。必须有一种更优雅的方式来做到这一点

对于某些正则表达式,可能的字符串列表可以是无限的。例如:

a*
包括

a
aa
aaa

因此,没有办法为给定的正则表达式生成所有字符串。

我一直在开发一个小助手库

它包括一个方法,
xeger()
,允许您从正则表达式创建字符串:

>>> import rstr
>>> rstr.xeger(r'[A-Z]\d[A-Z] \d[A-Z]\d')
u'M5R 2W4'

现在,它适用于大多数基本的正则表达式。

exrex模块会这样做:。

更重要的是,您为生成任意字符串而编写的任何函数都可能陷入无限循环中,*asciimoo指向
exrex
,这是使用生成器实现的。这样你就可以很容易地控制输出和输出的大小了。要求与正则表达式匹配。“a”有效,无需生成所有可能的场景。+1就像一个符咒!它甚至可以用
轻松安装
:)唉,这是GPL;你不能在商业软件中使用它而不污染它。有一个
xeger
方法,MITTo正在澄清JDonner对任何发现这一点的人的评论:这是AGPL;如果不将源代码发布到使用此库的整个可执行文件中,您甚至不能在服务器端商业软件中使用它。我想这不一定是件坏事,但人们在使用库之前了解许可证的要求是非常重要的!看这里:没有Python3版本?在Python3.8.1中工作