過去一天我一直在處理這個RegEx,我想我已經解決了它,以便它返回我想要的數據。首先有一點背景。根據Regex.Matches替換字符串中的內容MatchCollection
我有一個內容編輯器,用戶將能夠編輯網頁。他們可以格式化文本,添加鏈接等。標準內容編輯器的東西。當他們點擊保存時,編輯器提供獲取內容(editor.Content)並將其放入字符串的功能。我想要做的是獲得任何鏈接(<a>
標籤),並找出它們是內部鏈接還是外部鏈接,以及它們是否爲PDF文件。
這裏是表達我已經出來:
<a\b[^<>]*href\s*=\s*[\""\'](?<domain>https?:\/\/[^\/\s\'\""]*)*\/?(?<path>\/?[^\s\""]+?)?[[>\""\']
有了這個,我能到域分離(如果有的話)和輸出路徑。然後,我遍歷匹配...
dim matchColl as MatchCollection = Regex.Matches(editorContent, regExString)
For Each m as Match in matchColl
If m.Groups("domain").value <> myInternalDomain and m.Groups("domain").value <> "" then
'this is an external domain... do some stuff
End If
If m.Groups("path").value.EndsWith(".pdf") then
'it is a pdf, do some other stuff...
End if
Next
我的問題是這樣的......在我的部分「做一些東西」的價值觀,這將是最好的辦法讓回到我的' editorContent'字符串?我可能會把editorContent放入一個StringBuilder中,並對其進行一系列替換,但效率如何?
因此,例如,使用PDF,我想指定它在新窗口(target =「_ blank」)中打開,併爲外部URL添加一些javascript代碼到onclick屬性中。
任何想法都會很棒!
謝謝!
... [這是與HTML匹配的正則表達式。](http://stackoverflow.com/a/1732454/5458362)... – Riker 2016-05-03 21:48:28