我试图确定给定的页面是否不尊重标头标记(h1、h2等)。秩序。事实上,我希望能够解析一堆页面,并且它会返回不遵循页眉顺序的每一页。
我的第一个目标是能够找出h2以外的其他东西是否会紧跟在后面。我用下面的模式实现了这一点
(?<=<h1[^<>]*>.+?)(?<!<h1[^<>]*>.+?<h2[^<>]*>.+?)<h[3-6][^<>]*>以前的regex是为我工作,虽然它并不是真正有效的,远远不是完美的。
因此,在中,首先,,我希望得到一些帮助来改进这个模式,如果可能的话,可以解释一下我以前的模式,以及它为什么如此低效。而在第二个中,我想升级/修改模式,以实现最初的目标,即确保文档头标签的顺序得到尊重。
注意:--我正在使用RegexHero进行基准测试
I know Regular Expressions are typically not best practice for parsing HTML,但这更多的是一个练习,让我更有效率地使用查找器、原子分组等等,谢谢您的理解。
我们可以使用下面的模式和下面的文本作为示例
模式:
(?<=lol1.+?)(?<!lol1.+?lol2.+?)lol[3-6]文本:
lol1 bla lol3 bla lol2 bla lol4
发布于 2013-02-13 17:00:13
您可以做的是将您的头序列提取到一个数组中,然后您可以对其进行操作。例如:
<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)/ghttps://stackoverflow.com/questions/14858132
复制相似问题