我有一堆可以包含这种格式的自定义标记的文本:
[MYLINK ID="1234" URL="http://mywebsite.com" TEXT="Website link"]
文本可以包含多个链接。我想要做的是将标记转换成普通的html链接,并在C#代码中获取in。所得到的替换标记应采用以下格式:
<a href="http://mywebsite.com?id=1234">Website link</a>
因此,为了澄清,如果我有以下部分文本:
This is a test [MYLINK ID="1234" URL="http://mywebsite.com" TEXT="website link"] with some more text and [MYLINK ID="2345" URL="http://mywebsite2.com" TEXT="another link"] here too.
它应将以下内容转化为:
This is a test <a href="http://mywebsite.com?id=1234">website link</a> with some more text and <a href="http://mywebsite2.com?id=2345">another link</a> here too.
编辑:在过去的几个小时里一直在与Regex混搭,并设法得到以下匹配标记,但不知道下一步该做什么.
\[MYLINK ID=\"(.*?)\" URL=\"(.*?)\" TEXT=\"(.*?)\"\]
任何帮助都将不胜感激。干杯,
发布于 2022-02-12 17:19:05
如果属性总是按照所显示的顺序排列,则可以使用
var text = "[MYLINK ID=\"1234\" URL=\"http://mywebsite.com\" TEXT=\"Website link\"]";
var pattern = "\\[MYLINK\\s+ID=\"([^\"]*)\"\\s+URL=\"([^\"]*)\"\\s+TEXT=\"([^\"]*)\"]";
var replacement = "<a href=\"$2?id=$1\">$3</a>";
var result = Regex.Replace(text, pattern, replacement, RegexOptions.IgnoreCase);
// => <a href="http://mywebsite.com?id=1234">Website link</a>
请参阅.NET regex演示和C#演示。
详细信息
\[MYLINK
- [MYLINK
文本\s+
-任何一个或多个空白空间ID=\"
- ID="
文本([^\"]*)
-第1组($1
):除"
以外的零或多个字符\"\s+URL=\"
- "
,一个或多个空白空间,URL="
文本([^\"]*)
-第2组($2
):除"
以外的零或多个字符\"\s+TEXT=\"
- "
,一个或多个空白空间,TEXT="
文本([^\"]*)
-第3组($3
):除"
以外的零或多个字符\"]
- "]
文本。发布于 2022-02-12 17:27:37
谢谢-当你发帖的时候我真的收到了,做了一些类似的事情.
string pattern = @"\[MYLINK ID=\""(.*?)\"" URL=\""(.*?)\"" TEXT=\""(.*?)\""\]";
text = Regex.Replace(text, pattern, x => $"<a href='{x.Groups[2].Value}?id={x.Groups[1].Value}'>{x.Groups[3].Value}</a>");
https://stackoverflow.com/questions/71093896
复制相似问题