对于以下代码:
t1 = 'tyler vs ryan'
p1 = re.compile('(.*?) vs (.*?)')
print p1.findall(t1)
输出为:
[('tyler', '')]
但我早就料到了:
[('tyler', 'ryan')]
我发现,如果我添加一个分隔符,我可以让它工作:
t2 = 'tyler vs ryan!' # Notice the exclamation mark
p2 = re.compile('(.*?) vs (.*?)!') # Notice the exclamation mark
print p2.findall(t2)
输出:
[('tyler', 'ryan')]
有没有一种方法可以在不使用自定义分隔符的情况下获取匹配项?
最佳答案
不,试试这个
t1 = 'tyler vs ryan'
p1 = re.compile('(.*?) vs (.*?)$')
print p1.findall(t1)
给予:
[('tyler', 'ryan')]
$-匹配字符串的结尾或字符串结尾的换行符之前,并且在多行模式下也匹配换行符之前。