Python正则表达式不起作用

mat*_*all 8 python regex

我使用以下代码:

downloadlink = re.findall("http://uploadir.com/u/(.*)\b", str(downloadhtml))
Run Code Online (Sandbox Code Playgroud)

但是,当我传递以下字符串时:

<input type="text" value="http://uploadir.com/u/bb41c5b3" />
Run Code Online (Sandbox Code Playgroud)

当我期待它找到时,它什么也没找到:http://uploadir.com/u/bb41c5b3.我究竟做错了什么?

我使用http://gskinner.com/RegExr/测试了正则表达式,看起来是正确的.我在这里错过了什么吗?

unu*_*tbu 9

养成使用原始字符串制作所有正则表达式模式的习惯:

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']
Run Code Online (Sandbox Code Playgroud)

所不同的是,由于\b不同的解释:

In [18]: '\b'
Out[18]: '\x08'

In [19]: r'\b'
Out[19]: '\\b'
Run Code Online (Sandbox Code Playgroud)

'\b'是一个ASCII Backspace,r'\b'是一个由两个字符组成的字符串,一个反斜杠和一个b.


jok*_*net 7

>>> 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']
>>> 
Run Code Online (Sandbox Code Playgroud)