正常表达问题与向后看和前瞻

问题描述:

我试图创建一个正则表达式,从<div class="entrytext">的所有内容到这个div类旁边的第一个</p>正常表达问题与向后看和前瞻

目前,这是我所:

(?<=<div class="entrytext">.*<p>).*(?></p>) 

向好导致这个div上面所有的代码不匹配,但我遇到的问题是在这之后<div>也有很多</p>在文档中。

我想要的是接下这个div的所有内容,但直到找到第一个</p>

你能帮我一下吗?提前致谢。

+0

什么编程语言?另外,http://*.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – BoltClock 2011-04-10 17:53:16

+0

即时通讯使用C#。谢谢。 – Jose3d 2011-04-10 17:53:37

  1. 大多数正则表达式解析器不允许可变长度lookbehinds
  2. 您需要非贪婪的运营商
    (?<=<div class="entrytext">.*?<p>).*?(?></p>)
  3. 正则表达式是(令人惊讶的一次)的工具(A ?*后)这个工作,但仍然看着HTML解析器,无论你正在做什么需要这可能会受益于一个。
+0

谢谢,我添加了?并工作。问候。 Jose – Jose3d 2011-04-10 18:01:12

+0

@ Jose3d:确保您了解_why_它的工作原理。在文档中查找“贪婪”和“非贪婪”,或者仔细阅读http://www.regular-expressions.info – sehe 2011-04-10 19:54:25

+0

@sehe,为什么不告诉他'?'是一个量词和一个量词修饰符。 – sln 2011-04-11 04:22:18