纳金网

标题: C#正则表达式的学习 [打印本页]

作者: may    时间: 2016-3-12 23:55
标题: C#正则表达式的学习
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Text.RegularExpressions;

  7. namespace CSharpTest01
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             //C#正则表达式的学习Regex在System.Text.RegularExpressions;下

  14.             //1:定位元字符"^"、"$"
  15.             //"^":匹配必须出现在字符串的开头或行的开头
  16.             //"$":匹配出现在以下位置:字符串结尾、字符串结尾处的\n之前或行的结尾
  17.             //string s = "the game";
  18.             //string str1 = Regex.Replace(s, "^", "Begin ");//搜索字符串,符合正则表达式则在相应位置替换
  19.             //Console.WriteLine(str1);

  20.             //string str2 = Regex.Replace(s, "$", " end");//搜索字符串,符合正则表达式则在相应位置替换
  21.             //Console.WriteLine(str2);

  22.             //2:基本语法元字符"."、"\w"、"\W"、"\s"、"\S"、"\d"、"\D"、"\B"
  23.             //"." :匹配除换行符以外的任意字符
  24.             //"\w":匹配字母、数字、下划线、汉字(大小写字母、0-9数字、下划线_)。"\W":"\w"的补集(除了\w之外的)
  25.             //"\s":匹配任意空白符(包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f)。"\S":\s的补集
  26.             //"\d":匹配数字(0-9数字)。"\D":表示\d的补集(除0-9之外)
  27.             //"\B":匹配不是单词开始或结束的位置
  28.             //string s = Console.ReadLine();
  29.             //string MatchNumber = @"^\d*$";//正则表达式:匹配数字(\d匹配数字,*一个或者多个,^开头,$与最近的一个元字符\d匹配,表示结尾)
  30.             //bool isMatch = Regex.IsMatch(s, MatchNumber);
  31.             //Console.WriteLine(isMatch);

  32.             //3:[abc]、[a-c]、[^x]、[^axz]
  33.             //"[abc]":匹配括号中的字符
  34.             //"[a-c]":匹配a到c之间的字符
  35.             //"[^x]":匹配除x之外的任意字符
  36.             //"[^axz]":匹配除axz之外的任意字符
  37.             //string s = "I am Robot";
  38.             //string patten = @"[^aRo]";//除了aRo这几个字符以外的任意字符
  39.             //string str = Regex.Replace(s, patten, "*");
  40.             //Console.WriteLine(str);

  41.             //2:重复描述字符{n}、{n,}、{n,m}、?、+、*
  42.             //{n} :匹配前面的字符n次
  43.             //{n,}:匹配前面的字符n次或多于n次
  44.             //{n,m}:匹配前面的字符n到m次
  45.             //?:重复0次或1次
  46.             //+:重复1次或更多次
  47.             //*:重复0次或更多次
  48.             //string qq1 = "31313123";//输入的QQ号5-12位数字合法
  49.             //string qq2 = "153151351132121";
  50.             //string qq3 = "123d2s2";
  51.             //string MatchNumber = @"^\d{5,12}$";
  52.             //Console.WriteLine(Regex.IsMatch(qq1, MatchNumber));
  53.             //Console.WriteLine(Regex.IsMatch(qq2, MatchNumber));
  54.             //Console.WriteLine(Regex.IsMatch(qq3, MatchNumber));

  55.             //2:择一匹配字符 "|"
  56.             //"|" :将两个匹配条件进行逻辑或(Or)运算

  57.             string s = "kl454&^%$世纪12s";//检索字符串里面的数字和小写字母
  58.             string patten = @"\d|[a-z]";
  59.             MatchCollection col = Regex.Matches(s, patten);//Matches做多匹配
  60.             foreach (Match temp in col)//MatchCollection里面每一个都是Match
  61.             {
  62.                 Console.WriteLine(temp);//输出match实例相当于调用其ToString()方法;
  63.             }
  64.             s = "hello,word;nice.good";
  65.             patten = @"[,]|[;]|[.]";//或者@"[,;.]"
  66.             string[] resArray = Regex.Split(s, patten);
  67.             foreach (string temp in resArray)
  68.             {
  69.                 Console.WriteLine(temp);
  70.             }
  71.         }
  72.     }
  73. }
复制代码





欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5