代码之家  ›  专栏  ›  技术社区  ›  ThomasH

Python中的可组合正则表达式

  •  10
  • ThomasH  · 技术社区  · 17 年前

    Year = r'[12]\d{3}'
    Month = r'Jan|Feb|Mar'
    Day = r'\d{2}'
    HourMins = r'\d{2}:\d{2}'
    
    Date = r'%s %s, %s, %s' % (Month, Day, Year, HourMins)
    DateR = re.compile(Date)
    

    有人知道Python中有一种不同的方法或更系统的方法(可能是模块)来实现可组合的正则表达式吗?我宁愿单独编译每个正则表达式(例如,使用单独的编译选项),但似乎再也没有组合它们的方法了!?

    2 回复  |  直到 17 年前
        1
  •  1
  •   Martin v. Löwis    17 年前

    你可以使用Python的格式化语法:

    types = {
        "year":           r'[12]\d{3}',
        "month":        r'(Jan|Feb|Mar)',
        "day":            r'\d{2}',
        "hourmins":    r'\d{2}:\d{2}',
    }
    import re
    Date = r'%(month)s %(day)s, %(year)s, %(hourmins)s' % types
    DateR = re.compile(Date)
    

    (注意1月|2月|3月左右添加的分组)

        2
  •  4
  •   Glenn Maynard    17 年前

    你可以用Ping的 rxb :

    year = member("1", "2") + digit*3
    month = either("Jan", "Feb", "Mar")
    day = digit*2
    hour_mins = digit*2 + ":" + digit*2
    
    date = month + " " + day + ", " + year + ", " + hour_mins
    

    然后,您可以直接在结果日期进行匹配,或使用

    DateR = date.compile()