龙空技术网

C# - Regex与Match类,代码应用与实例 114

源丁编程 425

前言:

现时我们对“vbnetregexreplace”大约比较讲究,你们都需要学习一些“vbnetregexreplace”的相关资讯。那么小编也在网上收集了一些对于“vbnetregexreplace””的相关文章,希望朋友们能喜欢,姐妹们快快来学习一下吧!

#头条创作挑战赛#

在C#中使用RegexMatch类两个配合实现对文本内容的验证,查找,提取与替换操作,两个都位于System.Text.RegularExpressions命名空间下

Regex类用于处理正则表达式的类;Match类用于获取匹配正则的结果

Regex类

Regex类使用时分为静态类和实例化两种方式;其区别:

静态方式:.net会自动将正则表达式缓存起来,而在使用相同的时候正则的时候不会重新编译一般情况下会缓存15个正则

实例化方式:每一次实例化,就会重新编译正则

Regex类的主要方法

Regex.IsMatch();判断一个字符串是否匹配某个正则表达式

Regex.Match();从某个字符串中提取匹配正则表达式的某个子字符串(只能提取一个)

Regex.Matches();从字符串提取匹配的所有匹配的字符串

Regex.Replace();//字符串替换,把所有匹配正则表达式的字符串替换为对应的字符串

静态方式//1)编写匹配的正则表达式string strReg="^410\d{15}$";//调用的判断的静态方法(匹配规则,要验证的字符串)bool a=Regex.IsMatch(strReg,"410696080956898769");实例化方式 Regex reg = new Regex(strReg);bool b = reg.IsMatch(str);

正则表达式的3种基本应用

1判断字符串是否匹配,其格式为:Regex.IsMatch("字符串","正则表达式");

2字符串提取:Regex.Match("字符串","正则表达式");//只能提取一个

字符串提取:Regex.Matches("字符串","正则表达式");//提取所有匹配的字符串

3字符串替换:Regex.Replace(“字符串”,”正则表达式”,”替换的内容”);

Match类用于获取的正则结果即Regex.Match();Regex.Matches();方法的返回值类型,主要包括:

  1)Match.value:获取的正则内容 2) Match.Index:内容的其实下标 3) Match.Length:内容长度

3)Match.Groups:所有捕获组,默认Group[0]为全部捕获内容,如果同一个捕获组有多个内容,则取最后一个

  4)Match.Captures如果一个捕获组有多个内容,Group代表最后一个,而Captures代表这个捕获组的全部内容  

  5)Match.Collection 一个可迭代的正则集合 6)Match.Success:判断是否匹配

  7) Match.Next:如果匹配到了多个结果,用于返回下一个 8) Match.Result:用于替换

正则应用示例

1)IsMatch 用于判断一个字符串中是否匹配某个正则表达式,返回布尔值

字符串中只要匹配有3个数字的子字符串就返回true

2)Match 用于提取字符串中匹配某个正则表达式的子字符串,只提取匹配的第一个字符串,一般不加^(开头)和$(结尾)如果加了就表示要完全匹配

单个字符的意思上节说过,合在一起的意思是匹配句号及之前的至少一个除\n之外的任意字符或者字符串

3)Matches 用于提取字符串中所有匹配某个正则表达式的子字符串;注意贪婪模式

Groups下标0是 提取匹配正则表达式的;下标1是 提取组的即匹配小括号中的字符串

Matches 提取组时是根据正则表达式中的小括号来提取的,就算小括号的初衷是用来改变优先级而不是用于提取组的选项

4)判断是否是合法的邮政编码(6位数字)

仅验证邮政编码是否为六位数字

"[0-9]”表示0到9的任意字符,"{6}"表示前面的字符必须匹配6次,"[0-9]"可以被\d表示因此"[0-9]{6}"等价于"\d{6}",因此str1字符串验证的是字符串中只要匹配有6位数字的就返回true

@"^\d{6}$"与"^\\d{6}$"表示匹配的字符串必须是以数字开头与结尾,自己测试当str2="中国邮政100088"时是否匹配@"^\d{6}$"与"^\\d{6}$"

所以尽管验证str1与str2字符串的正则表达式结果都为true,但是要匹配的内容不同,以后如果是为验证如手机号,身份证号,邮箱等是否匹配正则表达式最好加上^与$

5)判断输入的字符串是否为合法的Email地址

简单验证Email地址

Email地址大致为比如 qwoieu@163.com或者 qwoieu@163.com.cn等

正则表达式的编写过程就是分析其大致构成再分别编写例题中简单的正则表达式分为3个部分

1) [a-zA-Z0-9_]+表示匹配任意0-9数字和大小写字母a-z加个下划线,复杂的还加其他的,加号表示中括号中的字符必须出现一次或者多次

2)@[a-zA-Z0-9]+ @是必须的,中括号与加号与1)中的意思一样

3)(\.[a-zA-Z]+)+ 其中[a-zA-Z]+与1)中意思一样

\.与单个字符.意思就不一样了,y因为.在正则表达式中有特殊的含义,因此如果真正想表达.则需要转移为\.

(\.[a-zA-Z]+)+表示小括号中的可以出现一次或者多次比如.com.cn等

正则表达式最主要的基本说完,Regex类的其他的属性方法自己测试

标签: #vbnetregexreplace #aspnetregexmatch