通常,我想从简单的regexp构建复杂的regexp。我目前所知道的唯一方法是通过字符串操作,例如:
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中的不同方法或更系统的方法(可能是模块)具有可组合的regexp?我宁愿单独编译每个正则表达式(例如,使用单独的编译选项),但是似乎没有办法再编写它们了??
答案 0 :(得分:4)
您可以使用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)
(注意在Jan | Feb | Mar附近添加的分组。)
答案 1 :(得分:1)
您可以使用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()