Python正则表达式是否匹配

Python正则表达式是否匹配,python,regex,Python,Regex,这是我的表达: r'.*?(\d*)\s(good|bad).*\:\s(\d*)'` 字符串: Hello 30 good. found: 50. Hello 10 bad. 我的问题是:我的表达式与第一个字符串匹配(30,good和50),但如何使它与第二个字符串匹配(10,bad) 到目前为止,表达式忽略了第二行,因为它不符合描述 谢谢 只需使用?量词使第二部分成为可选部分:- r'.*?(\d*)\s(good|bad)(?:.*\:\s(\d*))?' 使用(?:.*\:\s(

这是我的表达:

r'.*?(\d*)\s(good|bad).*\:\s(\d*)'`
字符串:

Hello 30 good. found: 50.

Hello 10 bad.
我的问题是:我的表达式与第一个字符串匹配(30,good和50),但如何使它与第二个字符串匹配(10,bad)

到目前为止,表达式忽略了第二行,因为它不符合描述


谢谢

只需使用
量词使第二部分成为可选部分:-

r'.*?(\d*)\s(good|bad)(?:.*\:\s(\d*))?'
使用
(?:.*\:\s(\d*))?
使模式
*\:\s(\d*)
可选。As
表示匹配
0或1


注意,我使用了一个
非捕获
组作为额外的分组,使其成为可选的。通过使用此选项,您的捕获组编号不会改变当前组的编号。因为,在捕获的组计数中不考虑非捕获组(?:…)事物。

只需使用
量词使第二部分可选:-

r'.*?(\d*)\s(good|bad)(?:.*\:\s(\d*))?'
使用
(?:.*\:\s(\d*))?
使模式
*\:\s(\d*)
可选。As
表示匹配
0或1


注意,我使用了一个
非捕获
组作为额外的分组,使其成为可选的。通过使用此选项,您的捕获组编号不会改变当前组的编号。因为,在捕获的组计数中不考虑非捕获组(即
(?:…)

r'.*?(\d+)\s(good|bad)[^\d]*(\d*)'

我认为这应该行得通

r'.*?(\d+)\s(good|bad)[^\d]*(\d*)'

@姆吉尔森。。是的,我已经解释过了。你也解释过了+感谢你的努力:)@mgilson。。是的,我已经解释过了。你也解释过了+1.感谢您的努力:)