• Regex


    一个例子


    string value="123";
    Regex re=new Regex(^[0-9]{1,2}$);
    if(!re.IsMatch(value))
    {

    }

    上面的代码用来判断字符串以数字开头和结尾,并且最多有2位。

    Regex re=new Regex(^[0-9]{1,2}$);

    解释:

    这句:声明一个新的Regex,

    ^表示:匹配字符串开始字符

    $表示:匹配结尾字符。

    [0-9]:匹配的数据类型。和\d异曲同工。

    {1,2}:匹配数据重复的次数。在这里表示出现了一次或两次

    详解:

    一:Regex语法

    (1)^、$

    匹配数据:1234567;

    Regex : ^[0-9]

    结果:1

    匹配以数字开头的一个字符

       数据改为:h123456;

       Regex:^[0-9]

       结果:无

    而当[]里该为a-z;结果就是h了。$和^类似,如下图

    另外一种意思,当^在[^n]里面,匹配除了n以为的任意字符

    例如

        匹配数据:4525

        Regex:[^45]

    结果:2

    (2)[ ]:匹配数据类型

    • \d:匹配数字类型数据,于[0-9]相同

    例如

         匹配数据:1234567

         Regex:\d[0-9]

         结果:12、34、56    3组 (7被滤掉)

    • \D:匹配非数字,于[^\d]表示相同

    例如

        匹配数据:123d

    Regex:\D

         结果:d

    • (.)点:匹配换行符以外的任意字符
    • \w(小写):匹配字母或数字或下划线或汉字
    • \s:  (小写):   匹配任意的空白符
    • \W(大写): 于小写相反

    (3){}:匹配数据重复次数

    • *表示重复零次或更多次,于\d{0,}(表示0次到无限次)相同

    例如:

          匹配数据:123K4567

          Regex:\d*

          结果:123、 、4567(注意中间的空值)

    • +表示重复一次或更多次
    • ?表示重复一次或零次
    • {n}重复n次

    例如

         匹配数据:123K45678

         Regex:\d{4}

         结果:4567    (数字在K后有连续出现过4次,在前面没有)

    例如

         匹配数据:12K45678

         Regex:\d{2,3}

         结果为:12、456、78 (从多位到少取,从前往后取,字符分开取,揣摩…)

    二 Regex在.net上

    (1) IsMatch重载列表:(判断是否存在)

    • IsMatch(string):判断字符串中是否存在匹配项,实例如开头例子。
    • IsMatch(string,int):从指定的开始位置判断是否存在匹配项
    • IsMatch(string,string):从外部传递会正则表达式及要匹配的数据,而不是声明的时候定义好正则表达式
    • IsMatch(string,string,RegexOptions):在匹配选项下匹配数据

         例

    1
    Regex.IsMatch("www.GOOGLE.com", "^[a-z.]{1,20}$", RegexOptions.IgnoreCase)

    RegexOptions.IgnoreCase:表示不区分大小写

    (2)Match(记录匹配到的数据)已重载

    1
    string text = "One car red car blue car";

    2
    string pat = @"(\w+)\s+(car)";

    3

    4
    Regex r = new Regex(pat, RegexOptions.IgnoreCase);

    5
    Match m = r.Match(text);

    6

    7
    Console.WriteLine("{0}",m.Value.ToString ());

    8
    Console.ReadKey();

    1

    (3)Replace (替换匹配到的数据)

    01
    static void Main(string[] args)

    02
    {

    03

    04
    string text = "four score and seven years ago";

    05
    System.Console.WriteLine("text=[" + text + "]");

    06
    string result = Regex.Replace(text, @"\w+",

    07
    new MatchEvaluator(Program.CapText));

    08
    System.Console.WriteLine("result=[" + result + "]");

    09

    10
    Console.ReadKey();

    11
    }

    12

    13
    static string CapText(Match m)

    14
    {

    15
    string x = m.ToString();

    16
    if (char.IsLower(x[0]))

    17
    {

    18
    return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);

    19
    }

    20
    return x;

    21
    }

    输出

  • 相关阅读:
    根据访问ip的地区跳转到指定地址
    js生成vCard,以及格式参数详细说明
    min_to_split_multiprocessing多进程,用于平时快速补充数据
    min_to_split.py按日存储到按个股存储
    readzip_minute_data 多进程处理数据
    打包成7zfile,to7zfile
    baostock_multiprocessing 多进程取数据
    终止阻塞线程(有共享锁的线程无效)
    readzip_add_maxL3多线程
    readzip_add_maxL2
  • 原文地址:https://www.cnblogs.com/dodui/p/2045247.html
Copyright © 2020-2023  润新知