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
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。”-这不是本案的重点,但谢谢你的建议。