首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据Regex.Matches MatchCollection替换字符串中的内容

根据Regex.Matches MatchCollection替换字符串中的内容
EN

Stack Overflow用户
提问于 2009-03-05 17:51:55
回答 1查看 2.7K关注 0票数 2

我在过去的一天左右一直在研究这个RegEx,我想我已经把它弄清楚了,这样它就能返回我想要的数据。首先是一些背景知识。

我有一个内容编辑器,用户将能够编辑网页。它们可以格式化文本,添加链接等。标准工具集编辑器的东西。当他们单击save时,编辑器提供了获取内容(editor.Content)并将其放入字符串的能力。我想做的是获取任何链接(<a>标签),并找出它们是内部链接还是外部链接,以及它们是否是PDF文件。

下面是我想出的表达式:

代码语言:javascript
运行
复制
<a\b[^<>]*href\s*=\s*[\""\'](?<domain>https?:\/\/[^\/\s\'\""]*)*\/?(?<path>\/?[^\s\""]+?)?[[>\""\']

这样,我就能够分离出域(如果有)和路径。然后我循环火柴..。

代码语言:javascript
运行
复制
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属性中。

任何想法都会很棒!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-05 17:55:18

我认为您想要做一个Regex.Replace并传入一个MatchEvaluator。基本上,MatchEvaluator是一个返回替换字符串的函数的委托。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/615835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档