嗨,我正在寻找一个会改变这种情况的正则表达式:
[check out this URL!](http://www.reallycoolURL.com)
进入这个:
<a href="http://www.reallycoolURL.com">check out this URL</a>
即。用户可以使用我的格式输入URL,我的C#应用程序会将其转换为超链接。我希望在C#中使用Regex.Replace函数,任何帮助都将不胜感激!
答案 0 :(得分:7)
使用Regex.Replace method指定替换字符串,以便格式化捕获的组。一个例子是:
string input = "[check out this URL!](http://www.reallycoolURL.com)";
string pattern = @"\[(?<Text>[^]]+)]\((?<Url>[^)]+)\)";
string replacement = @"<a href=""${Url}"">${Text}</a>";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result);
请注意,我在模式中使用了命名捕获组,这允许我在替换字符串中将它们称为${Name}
。您可以使用此格式轻松构建替换。
模式细分是:
\[(?<Text>[^]]+)]
:匹配一个左方括号,并将不是结束方括号的所有内容捕获到指定的捕获组文本中。然后匹配关闭的方括号。请注意,关闭方括号不需要在字符类组中进行转义。重要的是要逃离开口方括号。\((?<Url>[^)]+)\)
:同样的想法,但带括号并捕获到指定的 Url 组。命名组有助于清晰,正则表达式模式可以从他们可以获得的所有清晰度中受益。为了完整起见,这里使用相同的方法而不使用命名组,在这种情况下,它们编号为:
string input = "[check out this URL!](http://www.reallycoolURL.com)";
string pattern = @"\[([^]]+)]\(([^)]+)\)";
string replacement = @"<a href=""$2"">$1</a>";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result);
在这种情况下,([^]]+)
是第一个组,在替换模式中通过$1
引用,第二个组是([^)]+)
,由$2
引用。< / p>
答案 1 :(得分:1)
使用此正则表达式:
Regex rx = new Regex(@"\[(?<title>[^]]+)\]\((?<url>[^)]+)\)");
然后你可以遍历所有匹配并得到两个值:
foreach(Match match in rx.Matches(yourString))
{
string title = match.Groups["title"].Value;
string url = match.Groups["url"].Value;
string anchorTag = string.Format("<a href=\"{0}\">{1}</a>", url, title);
DoSomething(anchorTag);
}
答案 2 :(得分:1)
使用此正则表达式:
^\[([^\]]+)\]\(([^\)]+)\)$
使用此替换字符串:
<href="$2">$1</a>
美元符号表示捕获组(这些是由打开/关闭括号括起来的项目),并将提取这些组捕获的值。
答案 3 :(得分:-2)
看起来像这样的帮助:
'@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@'
发现于:http://snipplr.com/view/36992/improvement-of-url-interpretation-with-regex/