无法使用re.search()在Python中工作

时间:2015-11-13 18:52:32

标签: python regex string-parsing

我有一串" 动物猫狗"我试图从中提取动物

关注this example,我尝试使用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(): ()

我通过使用子串和.find()找到了解决问题的方法,但我很好奇我的原始代码出了什么问题。

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

1 个答案:

答案 0 :(得分:4)

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

string = "fox cat dog"
regex = "(\S+) cat dog\s*"
#       ~~~~~~Note the parenthesis there
m = re.search(regex, string)    
if m:
    temp = m.group(1)

您可以查看documentation以获取更多信息:

  

(...)匹配括号内的正则表达式,   并指示组的开始和结束;一组的内容   可以在执行匹配后检索,并且可以匹配   稍后在带有\ number特殊序列的字符串中进行描述   下面。要匹配文字'('或')',请使用\(\),或将其括起来   在一个字符类中:[(] [)]。