2010-12-23 167 views
1

我們在後端開發了一些帶所見即所得編輯器的Flash應用程序。我們要呈現的編輯功能,所以我們決定把自定義標籤<開始更多> ... < /到底有多>在我們的所見即所得。PCRE正則表達式:不包含的字符串

所有的HTML被解析並轉換爲XML,但唯一的問題是,我們需要得到更多的開始/結束多標籤將它們轉換爲自定義淡化效果展現在裏面閃光後更多的內容。

長話短說,下面是示例XML輸出。

Some text outside <start more> some text inside</end more> 
some other text <start more>1 and some random stuff <start more>2 and 
thing </end more>2 and random stuff </end more> 

正則表達式來獲得更多的開始和結束第一更

/(<start more>){1,1}(.+?)(<end more>)/ 

這個表達式捕獲<開始更多>和第一<到底有多>中的字符串中。我試圖做負面的前瞻斷言,只得到最內層的標籤。但不工作。

希望它是有道理的。如果我無法解釋問題,請告訴我。

回答

3

你應該制定的是到您的解析器,你說你已經離開。
如果更改<start more></end more>到一個有效的對,說<more> </more>,任何HTML解析器應該已經正確地處理它,即使它不是一個已知的標籤。

如果你堅持,有微弱的正則表達式可能是:

/<start more>(((?!<(?:/end|start) more>).)+)</end more>/ 
+0

下面是一個例子 - 它只是抓住了最裏面的一對:http://rubular.com/r/4p8jGiepW5 – Kobi 2010-12-23 12:18:51

+0

謝謝你的回答和例子。我已經從代碼中刪除了「更多」,並且'(((?!<(?:\/end | start)>)。)+)<\/end>'正在運行完美。不使用其他HTML解析器的原因(我嘗試過使用PHP domdocument),如果我們嘗試獲取內容,它也會去掉所有需要在Flash中顯示的嵌套html標籤(例如,粗體,斜體,等等)感興趣的人可以查看http://pk.dynamiconlinesystems.com/mc_main/,但其工作正在進行中。 – 2010-12-23 12:51:03

2

這是not possible正確解析XML/HTML正則表達式。你將不得不寫一個適當的解析器。

相關問題