Python正则表达式搜索三个术语

Python正则表达式搜索三个术语,python,regex,Python,Regex,我不熟悉Python和正则表达式,有点困惑。我想在网页标题中搜索三个不同的术语,如果标题与其中一个匹配,我希望打印出来(我使用scrapy,所以它会为每个项目打印)。我不确定我们是如何找到这三个词的?例如,如果标题有“连衣裙、钱包、抽水机”,请打印出来 现在,我刚刚得到了它来打印标题中的第一个学期 c_raw = response.xpath('//title').extract() c_re = re.search('<title>(.*?) |.*?', c_raw[0]) c

我不熟悉Python和正则表达式,有点困惑。我想在网页标题中搜索三个不同的术语,如果标题与其中一个匹配,我希望打印出来(我使用scrapy,所以它会为每个项目打印)。我不确定我们是如何找到这三个词的?例如,如果标题有“连衣裙、钱包、抽水机”,请打印出来

现在,我刚刚得到了它来打印标题中的第一个学期

c_raw = response.xpath('//title').extract()
c_re = re.search('<title>(.*?) |.*?', c_raw[0])
c = c_re.group(1).lower()
但有些c的打印没有。我也不确定c_raw[0]在做什么?0是做什么的? 任何帮助都将不胜感激


编辑:虽然下面的答案很有帮助,但在连衣裙、钱包和水泵周围添加括号也很有效,这里有一个正则表达式,可以找到哪些标题关键字(如果有的话)出现在
c|u raw

regex = re.compile("(?:Dresses)|(?:Wallets)|(?:Pumps)")
print regex.findall(c_raw)
(?:Dresses)
等的格式只意味着按照括号内的字母一起出现的顺序匹配它们,但不将它们保存为正则表达式组


至于
curaw[0]
在做什么,基本上
curaw
是一个字符串。在python中,可以将字符串视为字符数组。所以,
c_-raw[0]
是说,给我数组的第0个索引
c_-raw
——即获取
c_-raw
的第一个字符,从scrapy shell尝试这个演示

In [1]: text = "<title>Testing test Pumps abc asdf a</title>"

In [2]: sel = Selector(text=text)

In [3]: sel.xpath('//title').re('Dresses|Wallets|Pumps')
Out[3]: [u'Pumps']
[1]中的
:text=“测试泵abc asdf a”
在[2]中:选择=选择器(文本=文本)
[3]中的sel.xpath('//title').re('Dresses | wallet | Pumps'))
Out[3]:[u'Pumps']

由于您没有提供任何特定的起始url,我已经向selector对象输入了html

如果在正则表达式周围添加括号,会有帮助吗?就像
(衣服|钱包|水泵)
@rednaw这实际上解决了它!在解析网页时,应该尝试使用类似BeautifulSoup的XML解析器,而不是正则表达式。
In [1]: text = "<title>Testing test Pumps abc asdf a</title>"

In [2]: sel = Selector(text=text)

In [3]: sel.xpath('//title').re('Dresses|Wallets|Pumps')
Out[3]: [u'Pumps']