我有一個字符串,它看起來像這樣:如何使用正則表達式從該字符串中獲取日期?
<some_text> February 19, 2009 through March 17, 2009 <some_text>
我怎麼能拿起使用正則表達式的日期,使用Python。
我嘗試這樣做,看看我能在字符串中的至少匹配,但它並沒有發現任何東西:
r'\w*\d{1,2},\w+\d{4}\w+through\w+\d{1,2},\w+\d{4}'
任何幫助,將不勝感激。
我有一個字符串,它看起來像這樣:如何使用正則表達式從該字符串中獲取日期?
<some_text> February 19, 2009 through March 17, 2009 <some_text>
我怎麼能拿起使用正則表達式的日期,使用Python。
我嘗試這樣做,看看我能在字符串中的至少匹配,但它並沒有發現任何東西:
r'\w*\d{1,2},\w+\d{4}\w+through\w+\d{1,2},\w+\d{4}'
任何幫助,將不勝感激。
如何:
(\w+ \d\d?, \d{4})\b.+?\b(\w+ \d\d?, \d{4})\b
沒有工作:(... – Drakkainen
@ Drakkainen:在哪些方面沒有工作?你能更明確嗎?第一次約會在第一組,第二次在第二組。 – Toto
是的,如果我可以學習複製和粘貼正確...這個工作完美。謝謝! – Drakkainen
您將需要使用re.search做到這一點。
因爲這將是一個很長的正則表達式,爲了清晰起見,我建議您編譯它。
基本的正則表達式看起來像部份:
date_finder = re.compile("(\w+) through (\w+)")
這將找到「到」分隔的兩個字符串。
要訪問他們,你將使用
out = data_finder.search(input_str)
out.group(1) # first paren match
out.group(2) # second paren match group
接下來,您將需要檢查,看看您的羣體實際上是日期字符串或沒有。
date_finder = re.compile("([JFMASOND][a-z]+\s+\d{1,2}[\s,]+\d{4}) through")
這是從訪問:
out = date_finder.search(input_str)
out.group(1) # date string before through
要獲得第二隻需要重複上「到」的另一面是正則表達式。正則表達式可能會根據您的輸入數據進行一些調整,但您應該明白。
希望有所幫助。
你似乎忘記匹配空格。如果你正在使用're.match',你應該使用're.search'。 – Jerry
我正在使用re.search()...他們的空間.... –
Drakkainen
不需要那個詳細的'(?i)(?#start_date)[az] + [\ d,] +(? #through)[az] + [] +(?#end_date)[az] + [\ d,] +' – sln