python正则表达式生成器_用python编写正则表达式的随机数据生成器

如果您匹配的表达式没有任何“高级”特性,比如look-ahead or look-behind,那么您可以自己解析它并构建一个适当的生成器

将regex的每个部分视为返回某物的函数(例如,1到100个数字之间),并在顶部将它们粘在一起:import random

from string import digits, uppercase, letters

def joiner(*items):

# actually should return lambda as the other functions

return ''.join(item() for item in items)

def roll(item, n1, n2=None):

n2 = n2 or n1

return lambda: ''.join(item() for _ in xrange(random.randint(n1, n2)))

def rand(collection):

return lambda: random.choice(collection)

# this is a generator for /\d{1,10}:[A-Z]{5}/

print joiner(roll(rand(digits), 1, 10),

rand(':'),

roll(rand(uppercase), 5))

# [A-C]{2}\d{2,20}@\w{10,1000}

print joiner(roll(rand('ABC'), 2),

roll(rand(digits), 2, 20),

rand('@'),

roll(rand(letters), 10, 1000))

解析正则表达式是另一个问题。所以这个解决方案不是万能的,但也许已经足够了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值