C#中的正则表达式

正则表达式

英文为Regular Expression,是计算机科学中的一个重要概念。它使用一种数学算法来解决计算机程序中的文本检索、匹配等问题,正则表达语言是一种专门用于字符串处理的语言。
在许多语言中都提供了对它的支持,C#也是这样,它可以帮助我们解决一下问题:
1,检索:通过正则表达式,从字符串中获取我们想要的部分。
2,匹配:判断给定的字符串是否符合正则表达式的过滤逻辑。
“正则表达式表述了一个字符串的书写规则。”

比如:判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法。

组成:
正则表达式由普通字符特殊字符(称为元字符)组成的文字模式。
该模式描述在查找文字主体时待匹配的一个或多个字符串

常用的操作正则表达式的方法和委托

位于System.Text.RegularExpressions下的Regex类的静态方法和委托:

  • 静态方法IsMatch
    该方法的返回值是一个布尔类型,用于判定指定的字符串是否与正则表达式字符串匹配,它有三个重载方法。
bool IsMatch(string input, string pattern);
参数:     
input : 要搜索匹配项的字符串。
pattern : 要匹配的正则表达式模式。
返回结果 :如果正则表达式找到匹配项,就返回true;否则,就返回falsebool IsMatch(string input, string pattern, RegexOption options);
参数:
input : 要搜索匹配项的字符串。
pattern : 要匹配的正则表达式模式。
options :枚举值的一个按位集合,这些枚举值提供匹配选项。
返回结果 :如果正则表达式找到匹配项,则为true;否则,就返回falsebool IsMatch(string input, string pattern, RegexOption options, TimeSpan matchTimeout);
参数:
input : 要搜索匹配项的字符串。
pattern : 要匹配的正则表达式模式。
options :枚举值的一个按位集合,这些枚举值提供匹配选项。
matchTimeout :超时间隔
返回结果 :如果正则表达式找到匹配项,则为true;否则,就返回false
  • 静态方法Match
    这种方法使用指定的匹配选项(正则表达式)在输入字符串中搜索指定的正则表达式的第一个匹配项
    返回一个包含有关匹配信息的对象。
    同样有三个重载方法,参数和IsMatch方法相同。
Match Match(string input, string pattern);

Match Match(string input, string pattern, RegexOption options);

Match Match(string input, string pattern, RegexOption options, TimeSpan matchTimeout);
  • 静态方法Matches
    该方法在指定的输入字符串中搜索指定的正则表达式的所有匹配项。跟上面的方法不同,在于该方法的返回值是所有的匹配项。
    它同样有三个重载方法,并且参数和Match方法完全相同。
MatchCollection Matches(string input, string pattern);

MatchCollection Matches(string input, string pattern, RegexOption options);

MatchCollection Matches(string input, string pattern, RegexOption options, TimeSpan matchTimeout);
  • Replaces函数
    正则表达式主要是实现验证,提取,分割,替换字符的功能。Replace函数是实现替换功能的。
(1)
Replace(string input, string pattern, string replacement);

input是源字符串,pattern是匹配的条件,replacement是替换的内容,就是把符合匹配条件pattern的内容转换成它。
比如string result = Regex.Replace("abc", "ab", "##");  
结果是##c,就是把字符串abc中的ab替换成##

(2)
Replace(string input,string pattern,string replacement,RegexOptions options);

如果在匹配时忽略大小写就可以用RegexOptions.IgnoreCase
比如string result = Regex.Replace("ABc", "ab", "##",RegexOptions.IgnoreCase);
如果是简单的替换用上面两个函数就可以实现了.但如果有些复杂的替换,比如匹配到很多内容,不同的内容要替换成不同的字符。就需要用到下面两个函数:

(3)
Replace(string input,string pattern,MatchEvaluator evaluator);    
evaluator是一个代理,其实简单的说是一个函数指针,把一个函数做为参数传进来。
由于C#里没有指针就用代理来实现类似的功能.你可以用代理绑定的函数来指定你要实现的复杂替换。

(4)
Replace(string input,string pattern,MatchEvaluator evaluator,RegexOptions options);
这个函数上上面的功能一样,只不过多了一点枚举类型来指定是否忽略大小写等设置

@符号
我们经常在正则表达式字符串前面加上@字符,这样编译器在解析字符串时就不会将其中的字符解释为转义字符,而作为正则表达式的语法(元字符)存在。

string s = @"www.baidu.com \n apple";
加了@,\n就不会被当做换行符来对待了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值