正则表达式在python中找到一个特定的模式

时间:2013-08-16 20:06:59

标签: python regex

我使用的是Python 2.7,我有很多字符串数据。我需要从中解析出一个特定的模式。模式如下:

November 5 - December 10
Another example:
September 23 - December 16 

我想使用正则表达式来查找此模式中的数据。这是一个字符串,后跟一个空格,后跟一个数字,后跟一个' - ',然后是一串字符,然后是空格后跟一个数字!

我知道这听起来很复杂,但有人可以帮助我!

1 个答案:

答案 0 :(得分:7)

你可以用一种非常简单的方式做到这一点:

import re

text = """
November 5 - December 10
September 23 - December 16
"""

matches = re.findall("\w+\s\d+\s\-\s\w+\s\d+", text)
print matches

打印:

['November 5 - December 10', 'September 23 - December 16']

但是,如果这些单词只是月份名称,则可以通过指定月份列表而不仅仅是\w+来改进正则表达式:

months = "|".join(calendar.month_name)[1:]
matches = re.findall("{0}\s\d+\s\-\s{0}\s\d+".format(months), text)