gpt4 book ai didi

.net - 基于 Regex.Matches MatchCollection 替换字符串中的内容

转载 作者:行者123 更新时间:2023-12-04 07:09:31 25 4
gpt4 key购买 nike

过去一天左右我一直在研究这个 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 属性中。

任何想法都会很棒!

谢谢!

最佳答案

我想你想做一个 Regex.Replace 并传入 MatchEvaluator .基本上是 MatchEvaluator是返回替换字符串的函数的委托(delegate)。

关于.net - 基于 Regex.Matches MatchCollection 替换字符串中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com