Python 从字符串中检索日期
我正在尝试从字符串中检索日期。问题是这个日期的模式变化很大(字符串来自OCR读取)。以下是我需要识别的模式:Python 从字符串中检索日期,python,regex,Python,Regex,我正在尝试从字符串中检索日期。问题是这个日期的模式变化很大(字符串来自OCR读取)。以下是我需要识别的模式: 1111年11月11日(我已经可以拿到这个了) 11-11-1111(我已经可以拿到这个了) 11111(我已经可以得到这个了) 11-11-1111 11 1111 11-11 1111 23-10-17 9 06-17 到目前为止,我使用的正则表达式是一个轻微的修改(它现在允许空格,而不是仅仅分隔数字): 有没有办法为这种“流动”的日期结构构建正则表达式?你可以 \b\d{1,2
- 1111年11月11日(我已经可以拿到这个了)
- 11-11-1111(我已经可以拿到这个了)
- 11111(我已经可以得到这个了)
- 11-11-1111
- 11 1111
- 11-11 1111
- 23-10-17
- 9 06-17
\b\d{1,2}[- /]+\d{1,2}[- /]+\d{2,4}\b
看。你可以去
\b\d{1,2}[- /]+\d{1,2}[- /]+\d{2,4}\b
参见.Regex:
\b(?:\d{1,2}[-/]\s?{2}(:\d{4}\d{2})\b
或^(?:\d{1,2}[-/]\s?{2}(?:\d{4}\d{2})$
Regex:
\b(?:\d{1,2}[-/]\s?{2}(?:\d{4}}\d{2})\b
或^(?:\d{1,2}[-/]\s?{2}(?:\d{4}\d{2})$
我知道正则表达式是一个更好的答案,因为一行代码可以匹配所有的可能性,但我更喜欢转换为datetime
from datetime import datetime
string = "11- 11- 1111"
for fmt in ('%Y-%m-%d', '%d- %m- %Y', '%d %m %Y', '%d- %m- %y'):
try:
datetime_object = datetime.strptime(string, '%d- %m- %y')
...
我知道正则表达式是一个更好的答案,因为一行代码可以匹配所有的可能性,但我更喜欢转换为datetime
from datetime import datetime
string = "11- 11- 1111"
for fmt in ('%Y-%m-%d', '%d- %m- %Y', '%d %m %Y', '%d- %m- %y'):
try:
datetime_object = datetime.strptime(string, '%d- %m- %y')
...
? 如果不需要,则无需过度复杂化该模式。
\d{1,2}\d{1,4}\d{2}\d{1,4}\d{2}(?:\d{2})
?非常正确,谢谢!?如果您不需要,则无需过度复杂该模式。\d{1,2}\d{1,4}\d{2}\d{1,4}\d{2}(?:\d{2})
如何?您说得很对,谢谢!匹配1$0%11
@ctwheels修复了它。匹配1$0%11
@ctwheels修复了它。