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

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

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

原始问题:

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

给定的正则表达式

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

回答:

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

  1. 使用 dom 树工具

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

  1. 自行分解中间组

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

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