【发布时间】:2013-02-13 16:25:04
【问题描述】:
我正在尝试确定给定页面是否不遵守标题标签(h1、h2 等)的顺序。事实上,我希望能够解析一堆页面,并返回每个 DONT 遵循标题顺序的页面。
我的第一个目标是能够确定 an 后面是否紧跟 h2 以外的其他内容。我通过以下模式实现了这一点
(?<=<h1[^<>]*>.+?)(?<!<h1[^<>]*>.+?<h2[^<>]*>.+?)<h[3-6][^<>]*>
以前的正则表达式对我有用,虽然它不是很有效并且远非完美。
所以,首先我想得到一些帮助来改进这个模式,如果可能的话,我想解释一下我的旧模式以及它为什么效率低下的原因。 在第二个,我想升级/修改模式以实现最初的目标,即确保文档标题标签顺序得到尊重。
注意: 我正在使用 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
【问题讨论】:
-
如果我每次看到有人尝试用 Regex 解析 html 或 xml 时都得到一个镍币...
-
@YuriyFaktorovich 请查看更新
-
嗯,您可以编辑标题以使其与 HTML 无关吗?
-
@bergi 如果您认为合适,请继续。
标签: .net regex regex-negation regex-lookarounds