回答
我想通了由自己
(\ S * \ S *(1 \ d \ d \ d |?!200 \ d | 2010 | 2011))
聽起來是這樣的:
re.compile(r'''^
(january|february|march|...etc.)
\s
\d{1,2}
\s
(,\s2012)?
$''', re.I)
獲取月份和日期的原始正則表達式是:(january|february|...) \d\d?(?!\s*,\s*\d{4})
。
(?!\s*,\s*\d{4})
向前看,並確保字符串沒有後跟, YYYY
。我希望我能理解你的問題的這一部分。它不會匹配march 29, 2012
,因爲3月29日之後是逗號空間年。
聽起來像他想要選擇允許'2012',只是沒有其他的一年。 –
你不需要使用正則表達式。
import datetime
dt = datetime.datetime.now()
print dt.strftime('%B %d')
結果將是:
June 18
順便說一句,如果要排序的日期列表,並顯示出今年只有這些,這是2012年的,比嘗試使用split()
:
line = "March 29, YYYY"
if int(line.split(',')[1]) = 2012
print line
else
pass
你的問題不是100%清楚,但它看起來像你試圖從傳入的字符串解析日期。如果是這樣,請使用datetime
module而不是正則表達式。它更容易處理datetime.datetime.strptime()
方法被設計來讀取字符串日期的語言環境等,所以你可以試試下面的:
import datetime
def myDate(raw):
# Try to match a date with a year.
try:
dt = datetime.datetime.strptime(raw, '%B %d, %Y')
# Make sure its the year we want.
if dt.year != 2012:
return None
# Error, try to match without a year.
except ValueError:
try:
dt = datetime.datetime.strptime(raw, '%B %d')
except ValueError:
return None
# Add in the year information - by default it says 1900 since
# there was no year details in the string.
dt = dt.replace(year=2012)
# Strip away the time information and return just the date information.
return dt.date()
的strptime()
方法返回一個datetime
對象即日期和時間信息。因此最後一行調用date()
方法返回日期。還請注意,當沒有有效的輸入時,該函數返回None
- 您可以輕鬆更改此項以執行您所需的任何操作。有關不同格式代碼的詳細信息,請參見the documentation of the strptime()
method。
其使用的幾個例子:
>>> myDate('March 29, 2012')
datetime.date(2012, 3, 29)
>>> myDate('March 29, 2011')
>>> myDate('March 29, 2011') is None
True
>>> myDate('March 29')
datetime.date(2012, 3, 29)
>>> myDate('March 39')
>>> myDate('March 39') is None
True
你會發現這捕獲和拒絕接受非法日期(例如,39月),這可能會非常棘手用正則表達式來處理。
- 1. 蟒蛇正則表達式日期格式mm/dd
- 2. 蟒蛇正則表達式
- 3. 蟒蛇正則表達式用空格
- 4. 正則表達式來蟒蛇正則表達式
- 5. 蟒蛇正則表達式匹配和替換日期
- 6. 正則表達式的日期格式
- 7. 正則表達式日期格式
- 8. 日期格式的正則表達式
- 9. 正則表達式日期格式?
- 10. jquery正則表達式日期格式
- 11. 正則表達式 - 日期格式
- 12. 蟒蛇正則表達式分組
- 13. 蟒蛇difflib與正則表達式
- 14. 正則表達式蟒蛇+可變
- 15. 正則表達式的幫助(蟒蛇+
- 16. 匹配的正則表達式(蟒蛇)
- 17. 蟒蛇正則表達式組AttributteError
- 18. 蟒蛇多個正則表達式
- 19. 蟒蛇多行正則表達式
- 20. 蟒蛇正則表達式搜索
- 21. 蟒蛇正則表達式的幫助
- 22. 正則表達式的問題(蟒蛇)
- 23. 蟒蛇正則表達式幾千字
- 24. 蟒蛇正則表達式數字
- 25. 蟒蛇正則表達式,後面
- 26. 蟒蛇正則表達式負先行
- 27. 蟒蛇unicode正則表達式
- 28. 蟒蛇正則表達式[:阿爾法:]
- 29. 蟒蛇重複的正則表達式
- 30. 蟒蛇正則表達式解析
您可能想要閱讀顯示正則表達式替代方案的其他答案。你不需要(或想)使用正則表達式。這正是日期時間模塊的用途。 – alan