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

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

284 2025-01-16

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

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

原始问题:

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

给定的正则表达式:

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

回答:

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

  1. 使用 dom 树工具

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

  1. 自行分解中间组

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

来源:1731708568