为了账号安全,请及时绑定邮箱和手机立即绑定

反转Python中的正则表达式

反转Python中的正则表达式

守着一只汪 2019-09-24 16:39:06
我想反转一个正则表达式。即给定一个正则表达式,我想产生将匹配该正则表达式的任何字符串。我从理论计算机科学背景使用有限状态机知道如何执行此操作,但是我只想知道是否有人已经编写了一个库来执行此操作。:)我正在使用Python,所以我想要一个Python库。重申一下,我只想要一个与正则表达式匹配的字符串。像 ”。” 或“。*”将使无限数量的字符串与正则表达式匹配,但我并不在乎所有选项。我愿意这个库只对正则表达式的某些子集起作用。
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

别人也有类似的(重复?)问题在这里,我想提供一个小帮手库生成与Python随机字符串,我一直在努力。


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


>>> import rstr

>>> rstr.xeger(r'[A-Z]\d[A-Z] \d[A-Z]\d')

u'M5R 2W4'

现在,它可以与大多数基本正则表达式一起使用,但是我敢肯定它会得到改进。


查看完整回答
反对 回复 2019-09-24
?
GCT1015

TA贡献1827条经验 获得超4个赞

我不知道要执行此操作的任何模块。如果您在Cookbook或PyPI中找不到类似的内容,则可以尝试使用(未记录)re.sre_parse模块滚动自己的内容。这可能有助于您入门:


In [1]: import re


In [2]: a = re.sre_parse.parse("[abc]+[def]*\d?z")


In [3]: a

Out[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 99

max_repeat 0 65535

  in

    literal 100

    literal 101

    literal 102

max_repeat 0 1

  in

    category category_digit

literal 122


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 758 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信