如何用正则表达式在重复<li>标签中创建独立捕获组
捕获标签内容的正则方案
要精准抓取每一对<li>和</li>之间的内容,核心是改掉正则默认的贪婪匹配行为,以下是具体实现:
基础版(保留内容前后空白)
用这个正则全局匹配:
/<li>(.*?)</li>/g
- 细节说明:
<li>和</li>:精准匹配标签的开头与结尾(.*?):非贪婪捕获组,?会让匹配到第一个</li>就停止,不会一直吃到最后一对标签的内容/g:全局标志,确保所有符合的<li>对都被捕获
拿你提供的输入测试:
<li>packaged in a classy box</li> <li>measures 0.9x1.15" (2.3x2.8cm)</li> <li> <em>925 silver</em> and <em>14k white gold</em> arrive with an 20" <strong> silver chain </strong> </li>
会得到三个捕获结果:
packaged in a classy boxmeasures 0.9x1.15" (2.3x2.8cm)<em>925 silver</em> and <em>14k white gold</em> arrive with an 20" <strong> silver chain </strong>
优化版(自动去除内容前后空白)
如果想自动去掉<li>后、</li>前的空格,调整正则为:
/<li>\s*(.*?)\s*</li>/g
\s*:匹配任意数量的空白字符(空格、换行等),捕获内容时会自动忽略这些空白,结果更整洁
内容的提问来源于stack exchange,提问作者Austin Becker
相关产品推荐
相关产品推荐

