C# 正则表达式

正则表达式

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

C#中使用正则

C#中的RegEx类操作正则
位于 System.Text.RegularExpressions;命名空间下
可以使用静态方法,也可以使用实例方法。主要有以下几个开发中常用到的方法:

IsMatc,Match,Matches,Replace,Split

正则表达式的定义

//@符号用于忽略字符串里面的转义字符,\就表示斜杠不会被转义

string pattern=@"\d{3}";
var reg = new Regex(pattern);
等价于以下写法
var reg = new Regex(@"\d{3}");

IsMatc 指示正则表达式在输入字符串中是否找到匹配项。

IsMatch(String)
指示 Regex 构造函数中指定的正则表达式在指定的输入字符串中是否找到了匹配项。
IsMatch(String, Int32)
指示 Regex 构造函数中指定的正则表达式在指定的输入字符串中,从该字符串中的指定起始位置开始是否找到了匹配项。

string pattern = "abc";
string input = "123abc7899yy";
Regex regex = new Regex(pattern);
Console.WriteLine(regex.IsMatch(input));//从字符串的第一个字符开始寻找匹配
Console.WriteLine(regex.IsMatch(input,15));//从字符串的指定字符位置开始寻找匹配

Match 返回正则表达式的第一个匹配项

 string str = "123abc456def";
 var reg = new Regex(@"\d{3}");
 Console.WriteLine(reg.Match(str));  //123,返回第一个匹配项

Matches 在输入字符串中搜索正则表达式的所有匹配项并返回所有匹配。

 string str = "123abc456def";
 var reg = new Regex(@"\d{3}");
 var result = reg.Matches(str);
 foreach(var r in result )
 {
    Console.WriteLine(r);
 }
//输出 123 和 456

Replace 找到匹配项,然后使用新的字符串去替换匹配项

string str = "123abc456def";
var reg = new Regex(@"\d{3}");
string replaceStr = "*";
var result = reg.Replace(str, replaceStr); //*abc*def
var result = reg.Replace(str, replaceStr,1); //*abc456def   //限制最大替换的个数
var result = reg.Replace(str, replaceStr,1,5); //123abc*def  //限制最大替换的个数,并且指定开始匹配的位置
Console.WriteLine(result);

//使用委托对匹配项,进行操作后返回新数据
 string str = "123abc456def";
 var reg = new Regex(@"\d{3}");
 var result = reg.Replace(str, (p)=> {//p就是匹配到的项
                return p + "!";
            });
 Console.WriteLine(result);  //输出 123!abc456!def

Split 在由正则表达式匹配定义的位置将输入字符串拆分为一个子字符串数组。

string pattern = ",";
string input = "123,456,789,";
Regex regex = new Regex(pattern);
string[] strArray1 = regex.Split(input);
foreach (string str in strArray1)
 {
     Console.WriteLine(str);
 }
Console.WriteLine();
string[] strArray2 = regex.Split(input,2);//指定最大分割的次数,达到次数以后就不分割了
foreach (string str in strArray2)
 {
     Console.WriteLine(str);
 }
 Console.WriteLine();
 string[] strArray3 = regex.Split(input,2,5);//指定最大分割次数以及指定起始开始分割的位置
 oreach (string str in strArray3)
  {
     Console.WriteLine(str);
  }
posted @ 2022-07-18 15:59  清和时光  阅读(198)  评论(0编辑  收藏  举报