这真让我抓狂。我确信字符串开头的整个日期范围都由正则表达式匹配。然而,当我重新分割时,8
挂在后面。这里发生了什么以及如何在该日期范围内分割(在某些情况下它可能位于字符串的开头和中间,因此分割)?
import re
a = "09/05/2018-12/18/2018 Lecture Wednesday 01:30PM - 02:45PM, Room to be Announced"
b = r"([0-9]|\/|-){21}"
print re.split(b, a)
Result
['', '8', ' Lecture Wednesday 01:30PM - 02:45PM, Room to be Announced']
从文档中re.split
:
如果在模式中使用捕获括号,则模式中所有组的文本也会作为结果列表的一部分返回。
你确实有一个捕获组,它匹配的最后一个是字符8
。这就是为什么8
被返回。
您可以使用非捕获组来代替:
>>> b = r"(?:[0-9]|\/|-){21}"
^^ note these two characters added
>>> re.split(b, a)
['', ' Lecture Wednesday 01:30PM - 02:45PM, Room to be Announced']
或者您可以将所有选择放在一个字符类中,而根本不需要组:
>>> b = r"[-/0-9]{21}"
>>> re.split(b, a)
['', ' Lecture Wednesday 01:30PM - 02:45PM, Room to be Announced']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)