2011-09-10 30 views
0

我想知道維基媒體如何將其模型語法({{model|options}})轉換爲html代碼。 我有一個簡單的模型({{.*?}})一個正則表達式,但它沒有嵌套的模型(例如:{{model|options containing a {{submodel|options}}...}}wikimedia如何轉換其模型語法?

+0

[這是不是一個好主意,試圖解析與正則表達式的XML。](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 #1732454)毫無疑問,它使用了一個真正的解析器。 –

+0

當你要求'regex'有幫助時,你應該總是指定你正在使用的語言。 Javascript的正則表達式不那麼強大,至少對於C#而言,它的強大程度低於Perl – xanatos

+0

我使用的正則表達式與C# –

回答

1

記住,

一些人,當遇到一個問題,認爲「我知道,我將使用 正則表達式。「現在他們有兩個問題。 - 傑米·薩溫斯基

這就是說,你可以閱讀:Forum tags. What is the best way to implement them?我做嵌套標籤的例子,都與「純」正則表達式,並與使用的正則表達式的一點,但保持堆棧「更穩定」 C#編譯器在正則表達式手中。

您可以使用balancing groups。他們不是「基地」正則表達式的一部分(有些人不認爲它們是真正的正則表達式),

但我不會用類似正則表達式的程序來編寫像Wiki一樣大的東西。正則表達式的問題在於對它們進行編程是非常困難的,所以它們不會回溯(可以選擇這樣做,但是很難創建一個不需要回溯的正則表達式,或者只需要有限的回溯) ,當他們開始回溯時,結果是:他們可能會拖延幾分鐘,尋找合適的捕捉組合。

+0

那麼,你認爲它們如何轉換他們的模型到html代碼? –

+0

@Sébastien通過寫一大塊代碼? :-)這不是仙女。他們可以在我的第一個例子中做一些事情,然後用HTML代碼重建文本(從那裏很簡單)。但是如果你需要一個解析器,我很確定有人已經做到了。例如,嘗試使用Google Creo C#搜索(在codeplex http://creoleparser.codeplex.com/上) – xanatos

+0

HAHA:D - 您知道智能mediawiki開發人員如何解析其未指定的標記? - 是的正則表達式... – sleeplessnerd