我正在修改PHP Markdown(這是一個用於Stack Overflow的標記語言的PHP解析器),試圖實現Jeff在this blog post中描述的點1,2和3。我已經輕鬆完成過去兩年,但是這一次被證明是非常困難的:我需要修改PHP markdown的正則表達式的幫助
- 的字內刪除支持 強調like_this_example
事實上,在「正常」降價實現like_this_example會被渲染爲像這個的例子。這是非常不可取的;我只希望_example_變成示例。
我看了看源代碼,發現用來做重點的正則表達式:
var $em_relist = array(
'' => '(?:(?<!\*)\*(?!\*)|(?<!_)_(?!_))(?=\S|$)(?![.,:;]\s)',
'*' => '(?<=\S|^)(?<!\*)\*(?!\*)',
'_' => '(?<=\S|^)(?<!_)_(?!_)',
);
var $strong_relist = array(
'' => '(?:(?<!\*)\*\*(?!\*)|(?<!_)__(?!_))(?=\S|$)(?![.,:;]\s)',
'**' => '(?<=\S|^)(?<!\*)\*\*(?!\*)',
'__' => '(?<=\S|^)(?<!_)__(?!_)',
);
var $em_strong_relist = array(
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<!_)___(?!_))(?=\S|$)(?![.,:;]\s)',
'***' => '(?<=\S|^)(?<!\*)\*\*\*(?!\*)',
'___' => '(?<=\S|^)(?<!_)___(?!_)',
);
我試圖在Regex Buddy打開它,但它是不夠的,而消費後它的工作一個半小時我仍然不知道從哪裏開始。有什麼建議麼?
有些人,當與 面臨的問題,認爲「我知道,我將使用 正則表達式。」現在他們有 兩個問題。
這些正則表達式迷惑我,所以我也不太清楚,但我認爲你可以用'\ B'(字邊界)檢查下劃線位於單詞的開頭和結尾處。例如,'\ bfoo \ b'將匹配foo bar中的foo而不匹配foobar或barfoo。僅供參考(我確定你不能按原樣使用)'/ \ b _(。+?)_ \ b /'在我測試的輸入上做得很好。 – zneak 2010-08-01 01:06:39
嘿,這不是一個答案,但你們是專家..你能幫助我這個初學者水平的WMD問題http://stackoverflow.com/questions/3616788/wmd-how-to-get-the-generated-markdown -html碼 – Moon 2010-09-01 10:01:16