Python正则表达式无效

12 投票
2 回答
25483 浏览
提问于 2025-04-16 10:01

我正在使用以下代码:

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

撰写回答