从 image/text 中查找日期
Find date from image/text
我有这样的日期,我需要正则表达式来查找这些类型的日期
12-23-2019
29 10 2019
1:2:2018
9/04/2019
22.07.2019
这是我做的
首先,我删除了文本中的所有空格,这是它的样子
12-23-2019291020191:02:2018
这是我的正则表达式
re.findall(r'((\d{1,2})([.\/-])(\d{2}|\w{3,9})([.\/-])(\d{4}))',new_text)
它可以找到 12-23-2019 、 9/04/2019 、 22.07.2019 但找不到 29 10 2019 和 1:02:2018
您可以使用
(?<!\d)\d{1,2}([.:/ -])(?:\d{1,2}|\w{3,})\d{4}(?!\d)
详情
(?<!\d)
- 之前没有数字
\d{1,2}
- 1 位或 2 位数字
([.:/ -])
- 点、冒号、斜线、space 或连字符(在第 1 组中捕获)
(?:\d{1,2}|\w{3,})
- 1 位或 2 位数字或 3 个或更多字字符
</code> - 与第 1 组相同的值</li>
<li><code>\d{4}
- 四位数
(?!\d)
- 之后不允许有数字
import re
text = 'Aaaa 12-23-2019, bddd 29 10 2019 <=== 1:2:2018'
pattern = r'(?<!\d)\d{1,2}([.:/ -])(?:\d{1,2}|\w{3,})\d{4}(?!\d)'
results = [x.group() for x in re.finditer(pattern, text)]
print(results) # => ['12-23-2019', '29 10 2019', '1:2:2018']
我有这样的日期,我需要正则表达式来查找这些类型的日期
12-23-2019
29 10 2019
1:2:2018
9/04/2019
22.07.2019
这是我做的 首先,我删除了文本中的所有空格,这是它的样子
12-23-2019291020191:02:2018
这是我的正则表达式
re.findall(r'((\d{1,2})([.\/-])(\d{2}|\w{3,9})([.\/-])(\d{4}))',new_text)
它可以找到 12-23-2019 、 9/04/2019 、 22.07.2019 但找不到 29 10 2019 和 1:02:2018
您可以使用
(?<!\d)\d{1,2}([.:/ -])(?:\d{1,2}|\w{3,})\d{4}(?!\d)
详情
(?<!\d)
- 之前没有数字
\d{1,2}
- 1 位或 2 位数字([.:/ -])
- 点、冒号、斜线、space 或连字符(在第 1 组中捕获)(?:\d{1,2}|\w{3,})
- 1 位或 2 位数字或 3 个或更多字字符</code> - 与第 1 组相同的值</li> <li><code>\d{4}
- 四位数(?!\d)
- 之后不允许有数字
import re
text = 'Aaaa 12-23-2019, bddd 29 10 2019 <=== 1:2:2018'
pattern = r'(?<!\d)\d{1,2}([.:/ -])(?:\d{1,2}|\w{3,})\d{4}(?!\d)'
results = [x.group() for x in re.finditer(pattern, text)]
print(results) # => ['12-23-2019', '29 10 2019', '1:2:2018']