I need a regular expression to convert a string into an anchor tag to be used as a hyperlink
Hi I'm looking a regular expression that will change this:
[check out this URL!](http://w开发者_如何学Goww.reallycoolURL.com)
into this:
<a href="http://www.reallycoolURL.com">check out this URL</a>
i.e. a user can input a URL using my format and my C# application will convert this into a hyperlink. I'm looking to make use of the Regex.Replace function within C#, any help would be appreciated!
Use the Regex.Replace method to specify a replacement string that will allow you to format the captured groups. An example would be:
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);
Notice that I am using named capture groups in the pattern, which allows me to refer to them as ${Name}
in the replacement string. You can structure the replacement easily with this format.
The pattern breakdown is:
\[(?<Text>[^]]+)]
: match an opening square bracket, and capture everything that is not a closing square bracket into the named captured group Text. Then match the closing square bracket. Notice that the closing square bracket need not be escaped within the character class group. It is important to escape the opening square bracket though.\((?<Url>[^)]+)\)
: same idea but with parentheses and capturing into the named Url group.
Named groups help with clarity, and regex patterns can benefit from all the clarity they can get. For the sake of completeness here is the same approach without using named groups, in which case they are numbered:
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);
In this case ([^]]+)
is the first group, referred to via $1
in the replacement pattern, and the second group is ([^)]+)
, referred to by $2
.
Use this regex:
Regex rx = new Regex(@"\[(?<title>[^]]+)\]\((?<url>[^)]+)\)");
And then you can iterate through all matches and get the two values:
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);
}
Use this regex:
^\[([^\]]+)\]\(([^\)]+)\)$
With this replacement string:
<href="$2">$1</a>
The dollar symbols refer to the capturing groups (these are the items surrounded by the open/close parentheses) and will extract the values captured by these groups.
It looks like something like this help:
'@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@'
Found at: http://snipplr.com/view/36992/improvement-of-url-interpretation-with-regex/
精彩评论