C#正则表达式整理备忘 3

(5)择一匹配
C#正则表达式中的 (|) 符号似乎没有一个专门的称谓,姑且称之为“择一匹配”吧。事实上,像[a-z]也是一种择一匹配,只不过它只能匹配单个字符,而(|)则提供了更大的范围,(ab|xy)表示匹配ab或匹配xy。注意“|”与“()”在此是一个整体。下面提供一些简单的示例:

Code
string x = "0";
string y = "0.23"
;
string z = "100"
;
string a = "100.01"
;
string b = "9.9"
;
string c = "99.9"
;
string d = "99."
;
string e = "00.1"
;
Regex r
= new Regex(@"^/+?((100(.0+)*)|([1-9]?[0-9])(/./d+)*)$"
);
Console.WriteLine(
"x match count:" + r.Matches(x).Count);//1

Console.WriteLine("y match count:" + r.Matches(y).Count);//1
Console.WriteLine("z match count:" + r.Matches(z).Count);//1
Console.WriteLine("a match count:" + r.Matches(a).Count);//0
Console.WriteLine("b match count:" + r.Matches(b).Count);//1
Console.WriteLine("c match count:" + r.Matches(c).Count);//1
Console.WriteLine("d match count:" + r.Matches(d).Count);//0
Console.WriteLine("e match count:" + r.Matches(e).Count);//0
//匹配0到100的数。最外层的括号内包含两部分“(100(.0+)*)”,“([1-9]?[0-9])(/./d+)*”,这两部分是“OR”的关系,即正则表达式引擎会先尝试匹配100,如果失败,则尝试匹配后一个表达式(表示[0,100)范围中的数字)。


(6)特殊字符的匹配
下面提供一些简单的示例:

Code
string x = "//";
Regex r1
= new Regex("^$");
Console.WriteLine(
"r1 match count:" + r1.Matches(x).Count);//1
Regex r2 = new Regex(@"^//$");
Console.WriteLine(
"r2 match count:" + r2.Matches(x).Count);//1
Regex r3 = new Regex("^//$");
Console.WriteLine(
"r3 match count:" + r3.Matches(x).Count);//0
//匹配“/”

string x = "/"";
Regex r1 = new Regex("^/"$");
Console.WriteLine("r1 match count:" + r1.Matches(x).Count);//1
Regex r2 = new Regex(@"^""$");
Console.WriteLine(
"r2 match count:" + r2.Matches(x).Count);//1
//匹配双引号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值