.Net培训个人总结笔记16

学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214011.html

易错:
表达式"^\d{15}$|^\d{18}$"和表达式"^(\d{15}|\d{18})$"效果一样,但这两个表达式和"^\d{15}|\d{18}$"不一样,前两者都表示有15位或18位数字组成的字符串,而后者则表示以15位数字开头或者以18位数字结尾的字符串,只要字符串开始前15位全是数字或者最后18位全是数字则符合要求,例如:"123456789012345sdf","asdfas123456789012345678","123456789012345sdfsdf123456789012345678"等都符合匹配。

课外:
从网上搜索到的判断是否是邮箱格式的正则表达式(暂时还没能完全看懂):"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

细节:
以下正则表达式的功能是匹配出(大旗网)html文本中的图片链接全路径,其中外层圆括号是为了提取出图片的全路径地址,内层括号作用如下所述。
MatchCollection matches = Regex.Matches(html, "img\\s+src\\s*=\\s*[\"'](.+?(/\\w+\\.\\w+))[\"']");  //注意:正则表达式中的问号以及紧跟着问号后面的一对园括号不能省略,因为圆括号括着的是路径中文件名的特征(括号是把文件名前面的“/”和文件名捆绑在一起,以便前面的非贪婪问号识别,如果不加圆括号的话前面的非贪婪问号就只会尽早识别“/”,而不是尽早识别“/文件名.文件后缀”,这样的话表达式遇到路径中的第一个“/”时就立刻结束,从而导致文件路径不完整。

细节:
WebClient wc = new WebClient();
wc.BaseAddress = "http://www.daqi.com/";
//WebClient中的一个属性,专门用来设置基址,即目的地址的相对路径前面的基本地址,如:“http://img.daqi.com/img/0927/images/logo.png”的基址就是:“http://img.daqi.com/”。

细节:
string result = Regex.Replace(content, "(a+)", "【$1】"); //这里的“$1”表示在第二个参数里的正则表达式里的第一个组(即第一个圆括号里面)的内容。

有趣收获:
string content = "http://sina.com.cn";
result = Regex.Replace(content, @".*", "1");
Console.WriteLine(result);
打印结果是:“11”,但若 content = ""; 时,打印结果则是:“1”。
原因出在匹配的正则表达式上,当 content 为空字符串时,空字符串也能被 “.*” 匹配出一个结果,所以打印结果有一个 “1”;而当 content 不为空字符串(即有字符内容)时,能被 “.*” 匹配出的结果有且必然有两个,分别是 "" 和 "content里面的所有非空字符",因此此时打印结果有两个“1”,即 “11”。

细节:
Match match = Regex.Match("","");
match的Groups属性是从Groups[1]开始,若Groups[0]是表示整个match的内容,而不是某个组的内容。

经验:
若在正则表达式中需要匹配普普通通的圆括号,则表达式中的圆括号是不需要用 “\” 来对其进行转义的。

原文地址:https://www.cnblogs.com/lgjspace/p/2214011.html