zoukankan      html  css  js  c++  java
  • 【10】正则表达式

    1.简介
    正则表达式是对字符串进行匹配的语法,像name like '%张%'一样,定义了一些特殊的“元字符”,用来判断一个字符串是否满足某个规则。正则表达式非常深,编译器都是基于正则表达式,掌握基本使用即可。
    2.基本元字符:

    • .表示除了 以外的任意的单个字符
    • [0-9]表示的是0到9之间任何一个整数数字;[a-z]任意一个小写字母,[A-Z]任意一个大写字母
    • d数字,D非数字,s空白,S非空白,w小写字母和数字和汉字,W特殊符号。正则表达式中的是真的。
    • 表示对于.等特殊字符转义
    • ()提升优先级别和提取组
    • []代表一个区间中的任意一个[abcd]就代表abc或者数字中的任意一个字符
    • | 或者
    • +是出现1次到无限次
    • *是出现0次到无限次
    • ?是出现0次到1次
    • {5}出现5次,{1,2}一次或两次,{5,8}为5至8次,{1,}最少一次,{3,}最少3次
    • ^以…开始,$以…结束

    3.使用Regex.IsMatch(被匹配字符串, 正则表达式)判断是否匹配。C#中表示正则表达式最好前面加上@,可以避免转义带来的困扰。

    4.常用

    • 这样写是有缺陷的Regex.IsMatch("18911111234", @"d{11}")、Regex.IsMatch("3333333333333333", @"d{11}"),应该使用^$改成Regex.IsMatch("18911111234333", @"^d{11}$")
    • 手机号:@"^1d{10}$"
    • @"^d{5,10}$"匹配QQ号
    • ipv4地址:@"^d{1,3}.d{1,3}.d{1,3}.d{1,3}$" 正则表达式很难“一步到位”。192.168.1.15
    • @"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$" 匹配邮箱
    • [u4e00-u9fa5] 单个汉字 @"^[u4e00-u9fa5]{2,4}$" 长度为2-4的汉字姓名
    • 身份证号(15位、18位数字):@"^(d{15})$|^(d{18})$"
    • 身份证号(18位,最后一位可能是x) @"^(d{17})[dxX]$"
    • 日期格式:^d{4}-d{1,2}-d{1,2}$

    5.正则表达式:提取

    Match match = Regex.Match("2016-5-15", @"^(d{4})-(d{1,2})-(d{1,2})$");
    //使用()获取“分组”
    if(match.Success)
    {
    string year = match.Groups[1].Value;//序号从1开始
    string month = match.Groups[2].Value;
    string day = match.Groups[3].Value;
    Console.WriteLine(year+","+month+","+day);
    }
    else
    {
    Console.WriteLine("不匹配");
    }
  • 相关阅读:
    Stack的一种简单实现
    Allocator中uninitialized_fill等函数的简单实现
    Allocator的简易实现
    编写自己的迭代器
    简单的内存分配器
    vector的简单实现
    异常类Exception
    intent大致使用
    java初识集合(list,set,map)
    php分页
  • 原文地址:https://www.cnblogs.com/lolitagis02/p/8215226.html
Copyright © 2011-2022 走看看