python - 多次匹配括号内的文本
问题描述
假设我有这样的文字:
<p>Joe likes <ul><li>pizza</li>, <li>burgers</li>, and <li>fries</li></ul></p>
我想使用单个正则表达式来<li>
使用 python 提取 /list 标记之间的所有文本。
regexp = <p>.+?(<li>.+?</li>).+?</p>
<li>
这仅返回由/list 标签包围的列表中的第一项:
<li>pizza</li>
有没有办法让我抓住<li>
/list 标签之间的所有项目,所以我的输出看起来像:
<li>pizza</li><li>burgers</li><li>fries</li>
解决方案
这应该有效:
import re
source = '<p>Joe likes <ul><li>pizza</li>, <li>burgers</li>, and <li>fries</li></ul></p>'
res = ''.join(re.findall('<li>[^<]*</li>', source))
# <li>pizza</li><li>burgers</li><li>fries</li>
推荐阅读
- docker - Lua 错误:'null 不是对象(评估 \'document.querySelector...).click\')'
- css - 如何同时应用宽度、最小宽度和最大宽度
- pascal - 在 Pascal 中使用 TYPE 关键字
- c# - 为什么 Microsoft 分析器找不到 Microsoft.CodeAnalysis?
- javascript - 如何在输入字段中搜索特定单词
- python - 在django中将注册表单填写到数据库后如何存储用户选择的单选按钮值?
- javascript - 我如何编写承诺链
- css - Bootstrap 4 下拉按钮不会在固定高度表中弹出
- arrays - 当我尝试过滤的数组元素不存在时出现问题
- docker - 有没有办法在应用引擎中安装一次软件包以避免每次长时间部署?