1

我正在尝试确定给定页面是否不遵守标题标签(h1、h2 等)顺序。事实上,我希望能够解析一堆页面,并返回不遵循标题顺序的每个页面

我的第一个目标是能够确定 an 后面是否紧跟 h2 以外的其他内容。我用以下模式实现了

(?<=<h1[^<>]*>.+?)(?<!<h1[^<>]*>.+?<h2[^<>]*>.+?)<h[3-6][^<>]*>

以前的正则表达式对我有用,虽然它不是很有效并且远非完美。

因此,首先我希望得到一些帮助来改进这种模式,如果可能的话,我想解释一下我的旧模式以及为什么它如此低效。其次,我想升级/修改模式以实现最初的目标,即确保文档标题标签顺序得到尊重。

注意: 我使用 RegexHero 进行基准测试

我知道正则表达式通常不是解析 HTML 的最佳实践,但这对我来说更像是一种练习,可以更有效地使用环视、原子分组等,谢谢您的理解。

我们可以使用以下模式和以下文本作为示例

图案:

 (?<=lol1.+?)(?<!lol1.+?lol2.+?)lol[3-6]

文本:

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

4

1 回答 1

0

您可以做的是将您的标题序列提取到您可以操作的数组中。例如:

<h1><h3></h3></h1><h2><h3><h4></h4></h3></h2>

会翻译成:

[1,3,-3,-1,2,3,4,-4,-3,-2]

然后,您可以使用简单的操作来验证您的结构(例如,从一个值到下一个值的跳转是 +/-1)。

正则表达式:

/(<h\d|<\/h\d)/g
于 2013-02-13T17:00:13.553 回答