我在过去的一天左右一直在研究这个RegEx,我想我已经解决了它,以便它返回我想要的数据。首先是一点背景。
我有一个内容编辑器,用户可以编辑网页。他们可以格式化文本,添加链接等。标准内容编辑器的东西。当他们单击“保存”时,编辑器提供获取内容(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属性中。
任何想法都会很棒!
谢谢!