正则表达式 I

jyj00 2020-07-19

  1. 什么是正则表达式?

    • 一套规则,匹配字符串的

    能做什么

    • 检测一个输入的字符串是否合法 ——web开发项目 表单验证
      • 用户输入一个内容的时候,我们要提前做检测
      • 能够提高程序的效率并且减轻服务器的压力
    • 从一个大文件中找到所有符合规则的内容——日志分析,爬虫
      • 能够有效的从一大段文字中快速找到符合规则的内容
  2. 正则规则

    所有的规则中的字符就可以刚好匹配到字符串中的内容

  3. 字符组:描述的是一个位置上能出现的所有可能性

    接受范围,可以描述多个范围,连着写就可以了

    [abc] 一个中括号只表示一个字符位置

    匹配 a或者b或者c

    [0-9] 根据ascii进行范围的比对

    [a-zA-Z] 大小写

    在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的 元字符

    元字符 -- 匹配内容的规则
    []  [^]
    \d
    \w
    \s
    \t
    \n
    \W  非数字字母下划线
    \D  非数字
    \S 非空白
    [\d] \d
    .  匹配除了换行符之外的所有
    [^\d] 匹配所有的非数字
    ^ 匹配一个字符串的开始
    $     匹配一个字符串的结尾
    a表达式|b表达式     匹配a或者b表达式中的内容,如果匹配a成功了,不会继续和b匹配
                           所以,如果两个规则有重叠部分,总是把长的放在前面 
    ()  约束|描述的内容的范围问题
    
    www\.oldboy\.com|www\.baidu\.com|www\.jd\.com|www\.taobao\.com
    www\.(oldboy|baidu|jd|taobao)\.com
    记忆元字符 : 都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
        # \d \w \s \t \n \D \W \S
        # [] [^] .
        # ^ $
        # | ()
  4. 量词

    {n}  表示匹配n次
    {n,}  表示至少匹配n次
    {n,m} 表示至少匹配n次,至多m次
    ? 表示匹配0次或1次 {0,1}
    + 表示匹配1次或多次  {1,}
    *  表示匹配0次或多次  {0,}
    
    匹配0次
        # 整数 \d+
        # 小数 \d+\.\d+
        # 整数或小数 : \d+\.?\d*
    
        # 分组的作用 : \d+(\.\d+)?
    
    # 手机号码
        # 1 3-9 11位
        # 1[3-9]\d{9}
    
    # 判断用户输入的内容是否合法,如果用户输入的对就能查到结果,如果输入的不对就不能查到结果
        # ^1[3-9]\d{9}$
    # 从一个大文件中找到所有符合规则的内容
        # 1[3-9]\d{9}
        
    # 贪婪匹配
        # 在量词范围允许的情况下,尽量多的匹配内容
         .*x  表示匹配任意字符 任意多次数 遇到最后一个x才停下来
    # 非贪婪(惰性)匹配
        .*?x  表示匹配任意字符 任意多次数 但是一旦遇到x就停下来
        
    转义符
    	原本有特殊意义的字符,到了表达它本身的意义的时候,需要转义
    	有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
    	[().*+?]  所有的内容在字符组中会取消它的特殊意义
    	[a\-c] -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面或最后面

一个很好用的正则表达式工具网站 :http://tool.chinaz.com/regex/?qq-f-to=pcqq.group

相关推荐