当我将多个正则表达式组合成一个正则表达式时,为什么会得到一个空条目?

2024-10-01 11:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个字符串:

textt = '4/20/09 askdaskdkajjasffh haff 11/2/1999 ssaffg gsaff idquyrjdkhfrq 2015'

当我运行以下代码提取日期时,在输出中我得到一个元组列表,我的问题是:为什么每个元组中有3个条目,为什么每个元组中有一个为null?

regex1 = '(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})'

regex2 = '([1|2]\d{3})'

full_regex = '(%s|%s)' %(regex1, regex2)

re.findall(full_regex,textt)

输出:

[('4/20/09', '4/20/09', ''),
 ('11/2/1999', '11/2/1999', ''),
 ('2015', '', '2015')]

Tags: 字符串代码列表条目fullregex元组regex2
1条回答
网友
1楼 · 发布于 2024-10-01 11:24:09

每个元组中有三个项,因为正则表达式有三个捕获组(匹配的括号)regex1有一个组,regex2有另一个组-并且在构建full_regex时,在整个表达式周围添加了第三个组

一个组始终为空的原因是regex1regex2中的两个捕获组之一始终为空

如果您试图捕获完全匹配,可能只需要full_regex中的捕获组,或者,您可以忽略元组中不关心的项

相关问题 更多 >