Can';t让re.search()在Python中工作

Can';t让re.search()在Python中工作,python,regex,string-parsing,Python,Regex,String Parsing,我有一个“动物猫狗”类型的字符串,我试图从中提取动物 接下来,我尝试使用re.search(稍后也使用re.match),但是没有产生我预期的结果。if语句将通过,但groups()将为空 我的代码是: string = "fox cat dog" regex = "\S+ cat dog\s*" m = re.search(regex, string) if m: temp = m.group(1) 我尝试打印出m和m.groups()

我有一个“动物猫狗”类型的字符串,我试图从中提取动物

接下来,我尝试使用re.search(稍后也使用re.match),但是没有产生我预期的结果。if语句将通过,但groups()将为空

我的代码是:

string = "fox cat dog"
regex = "\S+ cat dog\s*"
m = re.search(regex, string)    
if m:
    temp = m.group(1)
我尝试打印出m和m.groups(),它们的值如下:

m: <_sre.SRE_Match object at 0x000000002009A920>  
m.groups(): ()
m:
m、 组():()
我通过使用子字符串和.find()找到了解决问题的方法,但我很好奇我的原始代码到底出了什么问题


任何帮助都将不胜感激。谢谢大家!

您只需在所需的组中添加一个括号即可。像这样:

string = "fox cat dog"
regex = "(\S+) cat dog\s*"
#       ~~~~~~Note the parenthesis there
m = re.search(regex, string)    
if m:
    temp = m.group(1)
您可能需要查看以了解更多信息:

(…)匹配括号内的任何正则表达式, 并指示组的开始和结束;组的内容 可以在执行匹配后检索,并且可以进行匹配 后面的字符串中带有\number特殊序列,如下所述 在下面要匹配文本“(”或“)”,请使用
\(
\)
,或将它们括起来 在字符类内:[(][)]


您只需要在所需的组中添加一个括号。像这样:

string = "fox cat dog"
regex = "(\S+) cat dog\s*"
#       ~~~~~~Note the parenthesis there
m = re.search(regex, string)    
if m:
    temp = m.group(1)
您可能需要查看以了解更多信息:

(…)匹配括号内的任何正则表达式, 并指示组的开始和结束;组的内容 可以在执行匹配后检索,并且可以进行匹配 后面的字符串中带有\number特殊序列,如下所述 在下面要匹配文本“(”或“)”,请使用
\(
\)
,或将它们括起来 在字符类内:[(][)]


您的模式中没有定义的组。您的模式中没有定义的组。