正则表达式 I

Posted zhaoxinblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 I相关的知识,希望对你有一定的参考价值。

  1. 什么是正则表达式?

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

    能做什么

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

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

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

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

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

    匹配 a或者b或者c

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

    [a-zA-Z] 大小写

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

    元字符 -- 匹配内容的规则
    []  [^]
    d
    w
    s
    	
    
    
    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 	 
     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

以上是关于正则表达式 I的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式