正则表达式:链接多个负向后查找和负向前查找

时间:2018-11-17 03:55:53

标签: python regex

正则表达式只是让人头疼。我想将两个负向后查找和负向后查找正则表达式链接在一起。

第一个:

re.sub(r'(?<!([0-1\b][0-9]|[2][0-3])):(?!([0-5][0-9])((?i)(am)|(pm)|(a.m)|(p.m)|(a.m.)|(p.m.))?\b)',':\n',s)

第二个:

re.sub(r'(?<!([ps][tp])):(?!([\/][\/]))',':\n',s)

它们都分别工作,如果不正确,则添加\n。一个是时间,另一个是URL。如果冒号不属于URL和时间,我该如何将它们加在一起,以便在冒号后立即添加\n

这是我问题的第一部分: How to split string with colons but not if it is a time?

1 个答案:

答案 0 :(得分:0)

最终走了很长一段路,并使用sub来修补被先前的负向后查找和负向超前正则表达式分解的URL。啊。

s = re.sub(r'(?<!([0-1\b][0-9]|[2][0-3])):(?!([0-5][0-9])((?i)(am)|(pm)|(a.m)|(p.m)|(a.m.)|(p.m.))?\b)',':\n',s,flags=re.IGNORECASE)
reg = re.compile(re.escape('http:\n//'), re.IGNORECASE)
reg1 = re.compile(re.escape('https:\n//'), re.IGNORECASE)
reg.sub('http://', s)
reg.sub('https://', s)