Hello! 欢迎来到小浪资源网!


正则表达式匹配HTML多行文本为何只捕获最后一行?


avatar
1986424546 2024-11-16 20

正则表达式匹配HTML多行文本为何只捕获最后一行?

解决正则表达式html 片段提取多行文本仅捕获最后一行的问题

原始问题:

尝试使用正则表达式html 片段中提取文本,目标文本可能有多行,但正则表达式只匹配并捕获了最后一行。如何解决这种问题?

给定的正则表达式:

/^(?:<[pb]>)+((?:w(s)?)+:)(?:</[pb]>)+ ?(?:<p>((?:w+s*[,.:;()]?s*)+)</p> ?)+$/gm

回答:

解决该问题的方法有两个:

  1. 使用 dom 树工具

正则表达式不适合匹配 html 这种结构严格且高度兼容的文本。推荐使用现成的 dom 树工具来解析 html 并提取文本。

  1. 自行分解中间组

如果一定要使用正则表达式,请注意,匹配到的中间组并不会自动转换成数组。需要使用额外的代码自行分解中间组以获得预期的结果。

相关阅读