比賽日我想編輯的試圖從一段文本中提取日期一些現有的正則表達式。由於我對正則表達式不太熟練,我認爲這是學習新內容的好時機。正則表達式在一個月
所以我有以下的正則表達式:
r'\b0*[1-9]?[0-9]\b'
它(如果我理解正確的話)檢索與零個或多個0的開頭的號碼,然後按零個或多個數字1和9之間,和0和9之間的1個數字因此,它匹配下面:
10
24
01
,但它也符合以下的事情(這顯然不是日期)
94
0000024
雖然它不符合以下(這實際上是日期):
1st
3rd
5th
所以我開始放話我需要什麼,並試圖寫它後面的正則表達式是什麼我趕上了:
- 一個以空格,短劃線,斜線或任何東西開頭的字符串(即直接與數字開始)
- 我嘗試:
\b|-|\/
- 我嘗試:
- 共有字符串中1個或2的數字。數字在一起應該在1到31之間,不管是否爲前導零。
- 我嘗試:
[1-9]|0[1-9]|[1-2][0-9]|3[0-1]
- 我嘗試:
- 要麼其次是 「ST」, 「第二」, 「第三」, 「日」,破折號,斜線或空格。
- 我嘗試:
st|nd|rd|th|-|\/|\b
- 我嘗試:
把這個在一起那就是:\b|-|\/[1-9]|0[1-9]|[1-2][0-9]|3[0-1]st|nd|rd|th|-|\/|\b
但是,這似乎並沒有在所有的工作。當我測試第二部分(數字)時,它幾乎匹配我輸入的所有數字。
我不想將此作爲give me ze code
的問題,但是有沒有人可以通過指出我在做什麼來幫助我錯誤?我真的很想學習使用正則表達式。
歡迎所有提示!
ps。我知道有些月份有更少的天數超過31個,但我不得不開始學習的地方..
[編輯]
所以要明確(@Saraiva問這個在評論)。我希望它匹配以下:
01
08
9
28
31
2nd
31st
/31st
-22nd/
/25-
但不是這樣的:
73
01200
026
/2200nd-
(6th
_「這(如果我理解正確)開始檢索的數與零級或更多0的,其次是1和9,以及0到9" 之間1號之間的零個或更多的數字_不,它'0(0+次),[1-9](0-1次),[ 0-9](1次)' –
你可以給它一些日期的樣本,它應該匹配?如05/12/2012或1st-fev-2015? –
這些應該是在文本字符串/行的開始? – Amit