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

来源:互联网 发布:数据库desc是什么意思 编辑:程序博客网 时间:2024/06/08 14:49

(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
//匹配双引号
原创粉丝点击