Python正则表达式搜索有不需要的字符

时间:2016-05-12 16:42:10

标签: python regex

在下面的python代码中

import re

myText = "The color of the car is red. Which is a popular color."
regularExp = "The color of the car is\s*(?P<color>\w*)..*"
pattern = re.compile(regularExp)

match = re.search(pattern, myText)
color = match.groups("color")
print(color)

我希望输出为red。但我得到的是('red',)。我做错了什么?

3 个答案:

答案 0 :(得分:3)

re.search返回match object,因为您可以看到groups方法始终返回元组。因此,要么访问结果color[0]的第一个元素,要么使用group函数:

color = match.group("color")

另请注意match.groups("color")可能不会按照您的想法执行操作,引用文档:

  

match.groups(缺省值=无)

     

默认参数用于未参与的组   比赛;它默认为无。

如果未找到颜色组匹配,则表示您将颜色设置为“颜色”。

答案 1 :(得分:1)

您正在打印元组,而不是str。试试这个:

print(color[0])

或(信用:WiktorStribiżew):

color = match.group("color")
print(color)

答案 2 :(得分:0)

匹配对象m

m.groups返回tuple,一个不可变的序列。您可以将其编入索引或

color = m.group(1) # m.group(n) for nth group

OR

color = m.group('color') # for named group

您说('red',)包含不需要的字符。这可能意味着你需要刷新基本的python,因为你无法识别tuple