Python正则表达式-多搜索

Python正则表达式-多搜索,python,regex,mechanize,Python,Regex,Mechanize,以下是我试图实现的目标: 使用python mechanize打开一个站点 如果内容与我的正则表达式不匹配,我将打开另一个站点 我使用另一个正则表达式执行搜索 以及提取的代码: m = re.search('<td>(?P<alt>\d+)', response.read()) ... m = re.search('<td>(?P<alt>\w+)', response.read()) print m.group('alt') m=re.sear

以下是我试图实现的目标:

  • 使用python mechanize打开一个站点
  • 如果内容与我的正则表达式不匹配,我将打开另一个站点
  • 我使用另一个正则表达式执行搜索
  • 以及提取的代码:

    m = re.search('<td>(?P<alt>\d+)', response.read())
    ...
    m = re.search('<td>(?P<alt>\w+)', response.read())
    print m.group('alt')
    
    m=re.search(')(?P和to-但都没有用-它们都没有解决我的问题


    这里我不关心效率,所以我不使用
    compile

    假设
    response
    是一个类似文件的对象,第二次调用
    read
    可能会返回一个空字符串,因为您以前使用了该文件

    data = response.read()
    m = re.search('<td>(?P<alt>\d\d*)', data)
    m = re.search('<td>(?P<alt>\d\d*)', data)
    print m.group('alt')
    
    data=response.read()
    m=重新搜索(“(?P\d\d*)”,数据)
    m=重新搜索(“(?P\d\d*)”,数据)
    打印m.group('alt')
    

    为什么要多次调用
    search

    每个响应的未过滤结果是什么。read()?我打赌第二次读取不会返回您期望的结果。您能通过调用两次re.search来添加有关您尝试执行的操作的更多详细信息吗?当前的示例代码毫无意义。@kramthegram-谢谢!您是对的。这不是regex问题。@shang-因为response.read()这两行之间发生了变化-参见我问题的第二点。你说得对-谢谢!所以这不是regex问题。我错了。我想多次调用搜索,因为这两行之间的数据可能会发生变化(我问题的第二点).@laszchamachla在这种情况下,我看不出这有什么帮助。如果我理解正确,你得到的是A页,搜索它的数据,如果没有匹配项,你就做一个新的请求并搜索该数据。如果在两次搜索之间,你发出一个新的请求并得到一个新的响应,这应该不会有问题。@Reiner-没错,这很奇怪,不是吗我也是。但是,正如您所建议的,在每次搜索解决问题之前先将response.read()指定给变量。我还建议编译一次正则表达式:
    rx=re.compile(“(?P\d\d*)”)
    ,然后在需要的地方重新使用它:
    m=rx.search(data)
    @9000-我写道:“我不关心效率,所以我不使用compile。”-这不是本案的重点,但谢谢你的建议。