Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RegEx替换查询以选择wiki语法_C#_Regex - Fatal编程技术网

C# RegEx替换查询以选择wiki语法

C# RegEx替换查询以选择wiki语法,c#,regex,C#,Regex,我有一个HTML字符串,需要从中获取“[Title |”模式,例如 “dafasdfasdf,adfasd.[测试| adf ddasfasdf[SDAF | assg ad” 我需要将“[标题|”替换为”http://www.test.com/“>标题” 什么是最好的办法 我正在接近: string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/]

我有一个HTML字符串,需要从中获取“[Title |”模式,例如

“dafasdfasdf,adfasd.[测试| adf ddasfasdf[SDAF | assg ad”

我需要将“[标题|”替换为”http://www.test.com/“>标题”

什么是最好的办法

我正在接近:

string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/] assg ad ";
        string p18 = @"(\[.*?|.*?\])";
        MatchCollection mc18 = Regex.Matches(test, p18, RegexOptions.Singleline | RegexOptions.IgnoreCase);
        foreach (Match m in mc18)
        {
            string value = m.Groups[1].Value;
            string fulltag = value.Substring(value.IndexOf("["), value.Length - value.IndexOf("["));
            Console.WriteLine("text=" + fulltag);
        }
必须有一种更干净的方法来获取这两个值,例如“标题”位和url本身

有什么建议吗?

替换模式:

\[([^|]+)\|[^]]*]
与:

简短的解释:

\[         # match the character '['
(          # start capture group 1
  [^|]+    #   match any character except '|' and repeat it one or more times
)          # end capture group 1
\|         # match the character '|'
[^]]*      # match any character except ']' and repeat it zero or more times
]          # match the character ']'
一个C#演示看起来像:

string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/] assg ad ";
string adjusted = Regex.Replace(test, @"\[([^|]+)\|[^]]*]", "$1");

请为您正在使用的语言添加一个标记。非常好,谢谢,我将此扩展了一点,以便为URL Regex.Replace(bodyText,@“[([^]+)\\\([^]*]),”)获得2美元;
string test = "dafasdfasdf adfasd [Test|http://www.test.com/] adf ddasfasdf [SDAF|http://www.madee.com/] assg ad ";
string adjusted = Regex.Replace(test, @"\[([^|]+)\|[^]]*]", "$1");