我开发了这段代码来查找文本中的模式:
pattern = re.compile(r'\: (\d{2})/(\d{2})/(\d{4})')
match = re.search(pattern, txt)
我的模式是这样的日期:dd/mm/yyyy
。问题如下:在文本中可能会出现两个日期,但我想只得到一个。两者之间的差异是日期之前的文本。我的意思是:
text1: dd/mm/yyyy
text2: dd/mm/yyyy
我只想在之前使用text2获取日期。我怎么能这样做?
答案 0 :(得分:3)
在模式中使用text2
并捕获日期子模式:
import re
txt = """text1: 12/05/2015
text2: 22/05/2016"""
pattern = re.compile(r'text2:\s*(\d{2}/\d{2}/\d{4})')
match = re.search(pattern, txt)
if match:
print(match.group(1))
请参阅Python demo
<强>详情:
text2:
- 文字子字符串\s*
- 0+ whitespaces (\d{2}/\d{2}/\d{4})
- 捕获与2位数字相匹配的群组1,/
,2位数,/
,然后是4位数。 re.search
方法会找到第一个匹配项,如果找到,我们需要获取第一个捕获组(match.group(1)
)的内容。
答案 1 :(得分:0)
您可以在列表中找到您找到的每个日期,然后选择最后一个日期。
list_of_dates = []
pattern = re.compile(r'\: (\d{2})/(\d{2})/(\d{4}))')
for date in pattern.finditer(txt):
list_of_dates.append(date.group(1)) # Take date as back reference
list_of_dates[-1] # This would give you last date