C#中的正则表达式

正则表达式 是一种匹配文本的模式。

常用函数

  • IsMatch 判断字符串是否与正则表达式匹配
  • Match 返回字符串中符合正则表达式的第一个匹配项
  • Matches 返回字符串中符合正则表达式的所有匹配项
  • Replaces 将字符串中符合正则表达式的字符串替换为另一个字符串
  • Split 使用正则表达式匹配的位置,将字符串拆分成字符串数组

定位元字符

 ^ 匹配必须出现在字符串开头或者行的开头

 $ 匹配必须出现在字符串结尾或者行的结尾

string str = "I am April.";
string str2 = Regex.Replace(str, "^", "Hi,");                //str2 = "Hi,I am April."
string str3 = Regex.Replace(str, "$", "welcome");            //str3 = "I am April.welcome"
 \w 匹配字母,数字,下划线
 \W 匹配字母,数字,下划线 以外的字符
 \s 匹配任意空白符
 \S 匹配空白符以外的字符
 \d 匹配数字

 \D 匹配数字以外的字符

string str = "123456";                                   //检查是否全为数字
bool isMatch = Regex.IsMatch(str, @"^\d*$");             //isMatch = True
[]  匹配中括号中的任意一个字符,  [abc] 表示匹配abc中的任意一个,[a-z]表示匹配a-z中的任意一个.

[^a] 匹配a以外的任意一个字符

string str = "Hi,April";                                    //匹配APr以外的字符并替换为*
string str2 = Regex.Replace(str, @"[^Apr]", "*");          //str2 = "***Apr**"

重复描述字符

 {n}   匹配前面的字符n次
 {n,}  匹配前面的字符n次或多于n次
 {n,m} 匹配前面的字符n次到m次
 ?     重复零次或一次
 +     重复一次或多次

 *     重复零次或多次

 string str = "1048032143";                                  //检测是否为5-12位数字
 bool result = Regex.IsMatch(str, @"^\d{5,12}$");           //result = True      

择一匹配,将匹配条件做或运算

| 或运算,满足其中一个匹配条件即可。

string str = "Hi,April,age:22";
MatchCollection results = Regex.Matches(str, @"\d|[a-z]|[A-Z]");   //匹配数字或字母  
foreach (Match result in results)
{
     Console.Write(result);                              
}                                                         //HiAprilage22
string str = "Hi,April,age:22";                  //用:或,分割字符串
string[] res = Regex.Split(str,@"[:,]");         //res = {"Hi","April","age","22"}

表达式分组

()对表达式分组,如 @"(ab\W{2}){2}" 等价于 @"ab\W{2}ab\W{2}"

 string str = "Hi!,Hi!,April";
 string res = Regex.Replace(str, @"(Hi\W{2}){2}","Hello");       //HelloApril

你可能感兴趣的:(C#,c#,正则表达式,定位,匹配)