代码之家  ›  专栏  ›  技术社区  ›  Bite code

是否有根据regexp生成数据的lib?(Python或其他)

  •  8
  • Bite code  · 技术社区  · 14 年前

    例如

    >>> print generate_date('\d{2,3}')
    13
    >>> print generate_date('\d{2,3}')
    422
    

    当然,目标是做一些比这更复杂的事情,比如电话号码和电子邮件地址。

    3 回复  |  直到 14 年前
        1
  •  8
  •   PaulMcG    6 年前

    Pyparsing包括 this regex inverter ,它返回简单正则表达式的所有置换的生成器。以下是该模块中的一些测试用例:

    [A-C]{2}\d{2}
    @|TH[12]
    @(@|TH[12])?
    @(@|TH[12]|AL[12]|SP[123]|TB(1[0-9]?|20?|[3-9]))?
    @(@|TH[12]|AL[12]|SP[123]|TB(1[0-9]?|20?|[3-9])|OH(1[0-9]?|2[0-9]?|30?|[4-9]))?
    (([ECMP]|HA|AK)[SD]|HS)T
    [A-CV]{2}
    A[cglmrstu]|B[aehikr]?|C[adeflmorsu]?|D[bsy]|E[rsu]|F[emr]?|G[ade]|H[efgos]?|I[nr]?|Kr?|L[airu]|M[dgnot]|N[abdeiop]?|Os?|P[abdmortu]?|R[abefghnu]|S[bcegimnr]?|T[abcehilm]|Uu[bhopqst]|U|V|W|Xe|Yb?|Z[nr]
    (a|b)|(x|y)
    

    编辑:

    要进行随机选择,请创建一个列表(一次!)你的排列,然后打电话 random.choice 每次需要与regex匹配的随机字符串时,都会出现在列表上,类似这样的情况(未测试):

    class RandomString(object):
        def __init__(self, regex):
            self.possible_strings = list(invRegex.invert(regex))
        def random_string(self):
            return random.choice(self.possible_strings)
    
        2
  •  2
  •   detly FBruynbroeck    14 年前

    There is a post 在Python邮件列表中,关于生成regex的所有排列的模块。不过,我不太确定你该怎么把它随机化。我会继续查的。

        3
  •  1
  •   nicomen    14 年前
    推荐文章