C#正则表达式实用大全(建议收藏!).docx
第
C#正则表达式实用大全(建议收藏!)
目录前言文章导读基础梳理RegEx类常用的方法①静态Match方法②静态的Matches方法③静态的IsMatch方法RegEx类的实例⑴字符串替换⑵字符串匹配⑶Match实例⑷解码gps的GPRMC字符串⑸提取[]的值⑹提取()的值⑺提取()的值命名空间说明正则常用表达式㈠校验数字的表达式㈡校验字符的表达式㈢特殊需求表达式使用demo总结
前言
在网上看到一个不错的简易版正则匹配和替换的工具,现在补充进来,感觉还不错,效果如下(输入验证中文汉字的正则表达式)
在线下载
文章导读
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串。正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。Regex类表示不可变(只读)的正则表达式。它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类。
基础梳理
说明:
由于在正则表达式中\、、*、^、$、+、(、)、|、{、[等字符已经具有一定特殊意义,如果需要用它们的原始意义,则应该对它进行转义,例如希望在字符串中至少有一个\,那么正则表达式应该这么写:\\+。
RegEx类常用的方法
①静态Match方法
使用静态Match方法,可以得到源中第一个匹配模式的连续子串。
静态的Match方法有2个重载,分别是
Regex.Match(stringinput,stringpattern);
Regex.Match(stringinput,stringpattern,RegexOptionsoptions);
第一种重载的参数表示:输入、模式
第二种重载的参数表示:输入、模式、RegexOptions枚举的按位或组合。
RegexOptions枚举的有效值是:
Complied表示编译此模式
CultureInvariant表示不考虑文化背景
ECMAScript表示符合ECMAScript,这个值只能和IgnoreCase、Multiline、Complied连用
ExplicitCapture表示只保存显式命名的组
IgnoreCase表示不区分输入的大小写
IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释
Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾
None表示无设置,此枚举项没有意义
RightToLeft表示从右向左扫描、匹配,这时,静态的Match方法返回从右向左的第一个匹配
Singleline表示单行模式,改变元字符.的意义,它可以匹配换行符
注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。
②静态的Matches方法
这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。
③静态的IsMatch方法
此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。
可以理解为:IsMatch方法,返回Matches方法返回的集合是否为空。
RegEx类的实例
⑴字符串替换
//例如我想把如下格式记录中的NAME值修改为WANG
stringline=ADDR=1234;NAME=ZHANG;PHONE=6789;
Regexreg=newRegex(NAME=(.+););
stringmodified=reg.Replace(line,NAME=WANG;);
//修改后的字符串为ADDR=1234;NAME=WANG;PHONE=6789
⑵字符串匹配
stringline=ADDR=1234;NAME=ZHANG;PHONE=6789;
Regexreg=newRegex(NAME=(.+););
//例如我想提取line中的NAME值
Matchmatch=reg.Match(line);
stringvalue=match.Groups[1].Value;
Console.WriteLine(value的值为: