2011-04-10 34 views
1

我試圖創建一個正則表達式,從<div class="entrytext">的所有內容到這個div類旁邊的第一個</p>正常表達問題與向後看和前瞻

目前,這是我所:

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

向好導致這個div上面所有的代碼不匹配,但我遇到的問題是在這之後<div>也有很多</p>在文檔中。

我想要的是接下這個div的所有內容,但直到找到第一個</p>

你能幫我一下嗎?提前致謝。

+0

什麼編程語言?另外,http://stackoverflow.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

回答

3
  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