[英]Python's re.split() not removing all matched characters
這讓我絕對瘋狂。 我很肯定,字符串開頭的整個日期范圍正由正則表達式匹配。 然而,當我做re.split時,一個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)
結果
['', '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']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.