如何更改段落中的绝对网址:
<p>http://www.google.com</p>
进入html链接进入段落:
<p><a href=\"http://www.google.com\">http://www.google.com</a></p>
Thare可以是很多段落。我希望正则表达式从这个url
中删除通用<p>url<p>
值,并将其放入模板中,如下所示:<p><a href=\"url\">url</a></p>
如何在短期内完成?可以使用regex.Replace()方法吗?
顺便说一句:用于绝对网址匹配的正则表达式可以是这样的:^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$
(取自msdn)
答案 0 :(得分:0)
形成你的正则表达式:删除第一个^和最后一个$ - 它意味着“从头到尾匹配整个输入字符串”
string regexPattern = @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?";
string input = @"<p>http://www.google.com</p>";
var reg = new Regex(regexPattern, RegexOptions.IgnoreCase);
// $0 - substitution, refers to the text matched by the whole pattern
var output = reg.Replace(input, "<a href=\"$0\">$0</a>");
有关替换的更多信息http://msdn.microsoft.com/en-us/library/ewy2t5e0.aspx
答案 1 :(得分:0)
尝试使用此正则表达式:
(?<!\")(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?(?!\")
避免匹配<a href="http://www.google.com">
之类的字符串(由"
括起来)。
示例代码:
var inputString = @"<p>http://www.google.com</p><p><a href=\"http://www.google.com\">my web link</a></p>";
var pattern = @"(?<url>(?<!\")(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?(?!\"))";
var result = Regex.Replace(strInput, pattern, "<a href=\"${url}\">${url}</a>");
解释
(?<!subexpression)
Zero-width negative lookbehind assertion.
(?!subexpression)
Zero-width negative lookahead assertion.
(?<name>subexpression)
Captures the matched subexpression into a named group.