如何使用正则表达式搜索问号和/?蟒蛇

时间:2014-11-25 17:49:10

标签: python html regex python-2.7 html-parsing

我想在文件中搜索与此模式匹配的数字:

<a  href="test/?n=451484"   >

然后获取数字451484

我使用这种模式:

'
(test/?n=)
\d+
'

但这不起作用?

3 个答案:

答案 0 :(得分:1)

3次更改

  • 转义?

  • d+包裹在paranthesis

  • test\?n=

  • 周围删除约束

使用示例

>>> import re
>>> str='<a  href="test/?n=451484"   >'
>>> re.findall(r'test/\?n=(\d+)', str)
['451484']

答案 1 :(得分:0)

要搜索文字?字符,您需要使用\转义它。 ?是正则表达式中的特殊字符,不能(通常)单独使用。

pattern = r"test/\?n=(\d+)"

答案 2 :(得分:0)

或者,您可以使用专业工具:

示例:

import re
from urlparse import urlparse, parse_qs
from bs4 import BeautifulSoup

data = """
<div>
    <a href="test/?n=451484">link</a>
</div>
"""

soup = BeautifulSoup(data)

# filtering links with a specific "href" attribute value    
link = soup.find('a', href=re.compile(r'test/\?n=\d+'))

url = link['href']
query = urlparse(url).query
print parse_qs(query)['n'][0]  # prints 451484