如何修改正则表达式以匹配最后一个指定<li>标签后的内容?
解决方案
要匹配最后一个符合格式的<li><a href="/bi-platform...">...</a></li>之后的所有内容,可以修改正则表达式如下:
(?s)(?<=.*<li><a href="\/bi-platform[^"]*\/">bi-platform[^<]*<\/a><\/li>).*
关键修改说明:
- 添加
(?s)单行模式:让.可以匹配换行符,确保能捕获目标项之后的所有行内容(包括示例中的iiiiioioioioi等多行内容)。 - 后瞻中加入
.*贪婪匹配:.*会优先匹配到文本末尾,再回溯找到最后一个符合格式的<li>...</li>,保证后瞻定位的是最后一个目标项。 - 优化目标项内的匹配逻辑:把原正则里的
.*替换为[^"]*(匹配href内的内容,避免过度匹配到引号外)和[^<]*(匹配a标签内的文本,避免过度匹配到标签外),减少不必要的回溯,提升匹配准确性。
用你的示例文本测试时,这个正则会精准捕获从WANTTHIS!!开始的所有后续内容。
内容的提问来源于stack exchange,提问作者Luís Alves
相关产品推荐
相关产品推荐

