首页 > web前端 > js教程 > 正文

正则表达式匹配HTML多行文本时,如何避免只捕获最后一行?

DDD
发布: 2024-11-16 08:18:19
原创
636人浏览过

正则表达式匹配html多行文本时,如何避免只捕获最后一行?

使用正则表达式从 html 片段中提取文本时,如何避免仅捕获到多行文本中的最后一行?

使用正则表达式从 html 片段中提取文本是常见操作。然而,有时我们希望捕获文本中的多行,但正则表达式却只能匹配到最后一行。

考虑以下正则表达式,它试图从 html 片段中提取文本:

/^(?:<[pb]>)+((?:\w(\s)?)+:)(?:<\/[pb]>)+\n?(?:<p>((?:\w+\s*[,.:;()]?\s*)+)<\/p>\n?)+$/gm
登录后复制

将其应用于以下 html 片段时:

Alkaid.art
Alkaid.art

专门为Phtoshop打造的AIGC绘画插件

Alkaid.art 153
查看详情 Alkaid.art

立即学习前端免费学习笔记(深入)”;

<p><b>Description:</b></p>
<p>This is a guitar accessory set includes 3pcs pickup covers, 1 volume and 2pcs knobs and 1 switch tip. Made of solid
    ABS plastic material. The covers are 48, 50 and 52mm spaced, fits for electric guitar. Great guitar accessory</p>

<p><b>Specification:</b></p>
<p>Made of ABS plastic material</p>
<p>Color: pink , Letter: White</p>
<p>Hole spacing: 48mm; 50mm; 52mm</p>

<p><b>Package Includes:</b></p>
<p>3 x Pickup cover</p>
<p>3 x Knob(1 volume knob and 2 knobs)</p>
<p>1 x Switch tip</p>
登录后复制

正则表达式可以成功匹配文本,但它仅捕获了最后一行 "1 x switch tip"。这是因为正则表达式使用了 $ 锚定符,它将匹配限制为目标字符串的结尾。

解决此问题的办法有两个:

  • 使用非贪婪匹配: 在匹配符号 + 后添加 ?,使其成为 +?。这将指示正则表达式非贪婪匹配,并尽早停止。
  • 使用 dom 树工具: 避免使用正则表达式解析 html,因为 dom 树工具提供了更可靠且易于操作的方法来提取文本。

以上就是正则表达式匹配HTML多行文本时,如何避免只捕获最后一行?的详细内容,更多请关注php中文网其它相关文章!

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号