C#正则表达式整理备忘(二)

 

C#正则表达式整理备忘(二)

(4)重复描述字符
“重复描述字符”是体现C#正则表达式“很好很强大”的地方之一:
{n} 匹配前面的字符n次
{n,} 匹配前面的字符n次或多于n次
{n,m} 匹配前面的字符n到m次
? 匹配前面的字符0或1次
+ 匹配前面的字符1次或多于1次
* 匹配前面的字符0次或式于0次
以下提供一些简单的示例:
Code
string x = "1024";
string y = "+1024"
;
string z = "1,024"
;
string a = "1"
;
string b="-1024"
;
string c = "10000"
;
Regex r
= new Regex(@"^/+?[1-9],?/d{3}$"
);
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);//0
Console.WriteLine("c match count:" + r.Matches(c).Count);//0
//匹配1000到9999的整数。


(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
//匹配双引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值