(33)C#正则表达式

 正则表达式:专门用于字符串处理的语言,用来描述字符串特征的表达式

元字符

 .

之间可以出现任意单个字符(除了 换行)

例如: a.b   意思是这个表达式必须是三个字符,第一个字符是a,第三个字符是b,中间是任意一个字符(中间字符也可以是空格)

[]

字符的筛选

例如: a[fgh]b 意思是这个表达式必须是三个字符,第一个字符是a,第三个字符是b,中间字符必须是f g h 中的一个字符

例如  a[0-9]b     第二个字符可以是 0到9之间的任意一个字符

例如 a[0-9a-zA-Z]b   第二个字符可以是 0到9或者a到z或者A-Z之间的任意一个字符

例如 a[^0-9a-z]b       第二个字符可以是除了0-9 a-z 以外的任意一个字符

|

表示或的意思

 例如: z|food   意思是 这个表达式是z 或者 food (| 优先级最低)

 例如:(z|f)ood 意思是 这个表达式是zood 或者 food

() 

改变优先级,提取组

*

限定符,表示 * 前一个字符可以出现次或者

例如: af*b   表示 f 可以不出现(ab)或者出现多次(afffffffb)

例如: a.*b   表示 ab间可以出现任何数字(asdgdffsgb)

限定符,表示 *号前一个字符至少出现一次

例如: a.+b    表示ab之间至少要出现一个字符(adfgsdfhsdfhb)

例如:a[0-9]b   表示 ab间至少有一个0-9的数字并且这个数字可以出现任意次(a0000b)

?

限定符,表示?前一个字符必须出现零次或者一次

例如: a.?b   这个字符串必须是ab 或者 a.b

?

另一个作用:终止贪婪模式。 正则表达式默认是贪婪模式

{}    

两种

1、{n}  之前的一个字符必须出现n次 

例如  a[0-9]{5}b   ab间的存在5个相同字符并且这5个字符必须是0到9之前的一个数 (a88888b)

2、{n,m} 之前的一个字符最少出现n次,最多出现m次

例如  a[0-9]{5,7}b         lue

3、{n,} 表示之前的一个字符至少出现n次,没有上限

^

必须是 xxx开头

例如 ^ab  表达式必须是ab开头 (ab454gag)

$

必须是 xxx结束

例如 xyz$ 表达式末尾必须是xyz(dhdfshxyz)

简写表达式

d 等价于[0-9]    英文单词 digital(数字)

D等价于[^0-9]

s  表示所有不可见空白符 (包括中英文空格、回车、tab等)

例如: as*b  表示ab之间可以有任意空白或者只是ab两个字符

S(大写) 表示除了s(小写) 以外的所有字符

w 匹配字母或数字或下划线或汉字 。   除了%&#@!$

W

 单机的边界

 @

如果一个字符串里出现带的正则(如:d)就需要在字符串前加个@,目的是让告诉.net编译器这个字符串里的不是转义用的。

Regex 类

表示不可变的正则表达式。

using System.Text.RegularExpressions;

构造函数

Regex()    初始化 Regex 类的新实例

Regex(String)  新实例初始化 Regex 为指定的正则表达式类(传一个正则表达式进来)

还有三个暂时不用

方法 

 Regex.Match(string) 传一个字符串进去  (返回一个Match对象)

 Regex.Match(string,string)第一个穿需要判断的字符串,第二个传正则表达式(返回一个Match对象)

 Regex.IsMatch(string,string) 返回一个布尔值用来判断是否匹配成功

            string p = "a.b";
            string str="addb";
            if (Regex.IsMatch(str, p))
            {
                Console.WriteLine("匹配成功");
               
            }
            else
            {
                Console.WriteLine("匹配不成功");
            }
            Console.ReadKey();
        }

 

Match 类

表示单个正则表达式匹配的结果

 using System.Text.RegularExpressions;

属性

Length 获得字符串长度

            string p = "a.b";
            string str="adb";
            Match match = Regex.Match(str, p);
            int a = match.Length;
            Console.WriteLine(a);

Success  判断是否匹配成功 

 string p = "a.b";
            string str="addb";
            Match match = Regex.Match(str, p);
            if (match.Success)
            {
                Console.WriteLine("匹配成功");
               
            }
            else
            {
                Console.WriteLine("匹配不成功");
            }
            Console.ReadKey();

Value  获得字符串的值

            string p = "a.b";
            string str="adb";
            Match match = Regex.Match(str, p);
            string a = match.Value;
            Console.WriteLine(a);

原文地址:https://www.cnblogs.com/buchizaodian/p/6607426.html