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

时间:2015-07-07 10:52:20

标签: python regex

我是Python和Regex的新手,我有点困惑。我想在网页标题中搜索三个不同的术语,如果标题与我想要打印的标题相匹配(我使用scrapy,那么它会为每个项目打印)。我不确定如何通过这三个术语进行搜索?例如,如果标题有" Dresses | Wallets | Pumps"打印出来。

目前我只是打印出标题中的第一个字词

c_raw = response.xpath('//title').extract()
c_re = re.search('<title>(.*?) |.*?', c_raw[0])
c = c_re.group(1).lower()

我试过

c_raw = response.xpath('//title').extract()
c_re = re.search('Dresses|Wallets|Pumps', c_raw[0])
c = c_re.group(0)

但是有些人打印了无。我还不确定c_raw[0]正在做什么? 0怎么办? 任何帮助将不胜感激!

编辑:虽然以下答案有所帮助 - 在Dresses | Wallets | Pumps周围添加括号

2 个答案:

答案 0 :(得分:2)

这是一个正则表达式,可以找到localStorage.vals = JSON.stringify(item); 中哪些(如果有)标题关键字:

c_raw

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

至于(?:Dresses)正在做什么,基本上c_raw[0]是一个字符串。在python中,您可以将字符串视为字符数组。所以,c_raw说,给我数组c_raw[0]的第0个索引 - 即得到c_raw的第一个字符

答案 1 :(得分:1)

从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']

我已经向选择器对象输入了html,因为您还没有提供任何特定的start-url