这是示例代码:
import re
source = """
BEGIN:VEVENT
DTSTART:20160404T113000Z
DTEND:20160404T141500Z
LOCATION:A3006
SUMMARY:[I-EM-3N:Energy Management Gr 3N] Basics of Mathematical Software
END:VEVENT
BEGIN:VEVENT
DTSTART:20160404T113000Z
DTEND:20160404T141500Z
LOCATION:A3007
SUMMARY:[I-EM-3N:Energy Management Gr 3N] Chemistry and Environment
END:VEVENT
"""
pattern = r'BEGIN.*?DTSTART:(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})\d{2}Z.*?DTEND:(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})\d{2}Z.*LOCATION:(.*?)\n.*?SUMMARY:\[(.*?):.*?\]\s(.*?)\s?\n.*?END:VEVENT'
s = re.findall(pattern, source, re.DOTALL)
print s
结果是[('2016'、'04'、'04'、'11'、'30'、'2016'、'04'、'04'、'14'、'15'、'A3007'、'I-EM-3N'、'Chemistry and Environment')],但另一个结果在哪里?你知道吗
你忘了做一个通配符匹配非贪婪(对我有用):
而且,由于表达式很复杂且不太可读,请考虑使用"verbose" mode:
相关问题 更多 >
编程相关推荐