Python re 与上一个捕获组不匹配

标签 python regex capture-group

对于下面的代码:

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

有没有一种方法可以在没有自定义分隔符的情况下获得我的匹配项?

最佳答案

(.*?) 是非贪婪的,它将匹配最小的空字符串(至少在 vs 之后)

尝试 (.*)([^ ]*) 或其他东西

关于Python re 与上一个捕获组不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368597/

相关文章:

python - PyQt5 拖放到系统文件资源管理器中(带有延迟编码)?

python - Proxifier 打开时 Python IDLE 和 shell 中出现错误

python - pandas 通过多个动态列来旋转 DataFrame

javascript - 使用动态 RegExp 获取 $1 捕获组

R 中具有多个捕获组的正则表达式组捕获

java - 将 Java 正则表达式捕获组替换为其自身的一部分

python - Flask:如何在蓝图中的每条路线之前运行一个方法?

python - 读取电子邮件正文并将每一行放入不同的变量中

javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项

python - 正则表达式匹配所有内容,直到模式中有异常