2013-08-16 75 views
3

我正在使用Python 2.7,並且我有很大一部分字符串數據。我需要從中解析出一個特定的模式。模式如下:正則表達式來查找python中的特定模式

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

我想使用正則表達式來查找此模式中的數據。這是一串字符,後跟一個空格,後跟一個數字,後跟一個' - ',然後是一串字符再次,然後是空格後跟一個數字!

我知道這聽起來很複雜,但有人可以幫助我!

+0

你的輸出結果應該如何? –

+0

你能不能按空格分割並獲取結果列表的元素? – Jerry

+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) 
+0

'[^ \ W_]'而不是'\ w'來排除下劃線。 – HamZa

+0

沒有下劃線,這只是一個破折號 –

+0

+ 1爲酷的解決方案,動態地構建正則表達式在一個非常緊湊的方式...我已經注意到你很好的正則表達式的風格,巡航通過一些舊的答案,並認爲對我來說這是一個大Python教育。 :) – zx81

相關問題