Python正则表达式无效
我正在使用以下代码:
downloadlink = re.findall("http://uploadir.com/u/(.*)\b", str(downloadhtml))
但是,当我传入以下字符串时:
<input type="text" value="http://uploadir.com/u/bb41c5b3" />
它什么都没找到,而我本来期待它能找到:http://uploadir.com/u/bb41c5b3。我哪里做错了?
我在使用http://gskinner.com/RegExr/测试这个正则表达式,结果看起来是正确的。我是不是漏掉了什么?
相关问题:
2 个回答
13
养成使用原始字符串来写正则表达式的习惯:
In [16]: re.findall("http://uploadir.com/u/(.*)\b", '<input type="text" value="http://uploadir.com/u/bb41c5b3" />')
Out[16]: []
In [17]: re.findall(r"http://uploadir.com/u/(.*)\b", '<input type="text" value="http://uploadir.com/u/bb41c5b3" />')
Out[17]: ['bb41c5b3']
之所以有区别,是因为 \b 的 解释方式不同:
In [18]: '\b'
Out[18]: '\x08'
In [19]: r'\b'
Out[19]: '\\b'
'\b' 代表的是一个 ASCII 回退符,而 r'\b' 则是由两个字符组成的字符串,一个是反斜杠和一个字母 b。
8
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用一个叫做“库”的东西时,发现它的某些功能不太好用,或者出现了错误。这种情况下,大家通常会去一个叫做StackOverflow的网站上寻求帮助。
在这个网站上,很多程序员会分享他们遇到的问题和解决方案。比如,有人可能会问:“我在使用这个库的时候,为什么会出现这个错误?”然后,其他人就会给出他们的建议和解决办法。
总之,StackOverflow是一个很好的地方,可以让你找到别人遇到的类似问题和解决方法,帮助你更好地理解编程中的各种工具和技术。
>>> import re
>>> html = '<input type="text" value="http://uploadir.com/u/bb41c5b3" />';
>>> regex = r'http://uploadir.com/u/([^"]+)'
>>> link = re.findall(regex, html)
>>> link
['bb41c5b3']
>>>