python - 如何获得匹配数n?正则表达式

标签 python regex python-2.7

我有这个 html 文本:

<div>
     <div class="item1">  value 1 </div>
                \n
     <div class="item1">  value 2 </div>
               \n
     <div class="item1">  value 3 </div> 

</div>

div 标签之间存在未知文本:

我想要value 3

我试过这个:re.findall(r'class="item1".*?{3}>(.*?)</div>',x,re.S)

但是我收到无效重复错误,因为我用户为 {3},如何获取第三个匹配项?

最佳答案

通过BeautifulSoup css selectors .

>>> from bs4 import BeautifulSoup
>>> s = """<div>
     <div class="item1">  value 1 </div>

     <div class="item1">  value 2 </div>

     <div class="item1">  value 3 </div> 

</div>"""
>>> soup = BeautifulSoup(s)
>>> soup
<html><body><div>
<div class="item1">  value 1 </div>
<div class="item1">  value 2 </div>
<div class="item1">  value 3 </div>
</div></body></html>
>>> [i.string for i in soup.select('div > div[class~=item1]')[-1]]
['  value 3 ']
>>> [i.string.strip() for i in soup.select('div > div[class~=item1]')[-1]]
['value 3']

正如其他人所说,不要使用正则表达式解析 html 文件。

>>> re.findall(r'<div\s+class="item1">\s*(.*?)\s+</div>', s)[-1]
'value 3'

关于python - 如何获得匹配数n?正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27203014/

相关文章:

java - Java 中的正则表达式转义序列错误

python - NameError: 全局名称 '_' 未定义

python - 列表理解,但在根据条件选择迭代的列表上

python - 如何使用 Python 设置网络摄像头服务器?

javascript - 如何从React Form -> Flask Backend -> React Component传递数据(和CORS有关系吗)?

PHP:仅正则表达式字母数字和一些特殊字符

c# - 正则表达式:重复捕获组

python - 对元组中的相似元素求和

python - TypeError : expected httplib. 消息,得到 <type 'instance' >。在 GAE 上使用 requests.get(url) 时

python - 列表:如何判断列表中的字母是否在单词中?