对于以下代码:

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')]

$-匹配字符串的结尾或字符串结尾的换行符之前,并且在多行模式下也匹配换行符之前。

07-27 19:53