Python 正则表达式停止捕获组位于?符号

Python 正则表达式停止捕获组位于?符号,python,regex,Python,Regex,我试图在以下字符串中捕获“thing1”和“thing2”: http://www.example.com/stuff1/thing1 http://www.example.com/stuff2/thing2?id=9999 在python中,我尝试了以下方法: re.findall('^.*(?:stuff1/|stuff2/)(.*)\??.*$', url) 第一个示例URL适用于我的代码,但第二个示例给出: ['thing2?id=9999'] 我希望捕获组不包括“?”尝试以

我试图在以下字符串中捕获
“thing1”
“thing2”

http://www.example.com/stuff1/thing1   
http://www.example.com/stuff2/thing2?id=9999
在python中,我尝试了以下方法:

re.findall('^.*(?:stuff1/|stuff2/)(.*)\??.*$', url)
第一个示例URL适用于我的代码,但第二个示例给出:

['thing2?id=9999']
我希望捕获组不包括
“?”

尝试以下操作:

import re
re.findall('^.*(?:stuff\d\/)(.*?)(?=\?|$).*$', url)
在这个正则表达式中,我使用正向前瞻
(?=)
来排除

尝试以下方法:

import re
re.findall('^.*(?:stuff\d\/)(.*?)(?=\?|$).*$', url)
在这个正则表达式中,我使用正向前瞻
(?=)
来排除
只捕获“非
”字符:

只需捕获“非
”字符:


谢谢你,你用的是什么?将捕获组中的查找从贪婪切换到懒惰,这似乎是关键。我选择了另一个答案,因为它是simper@AlexG不用担心,我很高兴你找到了一个有效的解决方案。谢谢你,你使用了?将捕获组中的查找从贪婪切换到懒惰,这似乎是关键。我选择了另一个答案,因为它是simper@AlexG别担心,我很高兴你找到了一个有效的解决办法。