我寫BBcode轉換器到html。
轉換器應該跳過未封閉的標籤。正則表達式BBCode到HTML
我想到了2個選項做到這一點:
1)匹配一次使用一個正則表達式的呼叫,像所有標籤:
Regex re2 = new Regex(@"\[(\ /?(?:b|i|u|quote|strike))\]");
MatchCollection mc = re2.Matches(sourcestring);
,然後遍歷MatchCollection使用2個指針找到啓動並打開標籤而不是用正確的html標籤替換。
2)調用正則表達式的多個時間爲每個變量和直接替代:
Regex re = new Regex(@"\[b\](.*?)\[\/b\]");
string s1 = re.Replace(sourcestring2,"<b>$1</b>");
什麼是更有效?
第一個選項使用一個正則表達式,但會要求我遍歷所有標記並找到所有對,並跳過沒有一對的標記。
另一個積極的方面是我不關心標籤之間的內容,我只是工作並用位置替換它們。
第二個選項我不需要擔心循環和特殊替換功能。
但將需要執行多個正則表達式和替換。
你能提出什麼建議?
如果第二個選項是正確的, 沒有與正則表達式 \[b\](.*?)\[\/b\
]
如何解決它也匹配多線像一個問題:
[b]
test 1
[/b]
[b]
test 2
[/b]
它不適用於字符串: 「[b] bla bla [/ b] bla bla [b]」+「\ r \ n」+「bla bla [/ b]」; – ilann 2010-06-17 19:28:02
測試它與確切的代碼,它工作得很好,所以我不太確定問題可能是什麼。但如果你可以複製上面的代碼,並檢查:) 編輯:將代碼移動到我的答案 – Buildstarted 2010-06-17 19:56:17