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

         最近写小工具多次用到正则表达式,由于没有系统地学习过,每次百度现学现卖都挺费劲。下面好好地梳理一下正则表达式的知识。

         首先,什么是正则表达式呢?它是一种特殊的字符串模式,用于匹配一组字符串。说白了就是用正则表达式制定一个规则,按照规则去寻找符合要求的字符串。

    1. 正则元字符

         元字符是构造正则表达式的一种基本元素,我们来记几个常用的元字符。

    元字符 说明
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    . 匹配除换行符外的任意字符
    w 匹配数字、字母、下划线、汉字
    d 匹配任意的数字
    s 匹配任意的空白符
     匹配字符串的开始或结束
    [abc] 匹配方括号中的字符组

    2. 几种反义

    写法很简单,改成大写就行了,意思与原来相反。

    反义字符 说明
    W

    匹配除数字、字母、下划线、汉字以外的字符,即特殊字符

    S 匹配任意不是空白符的字符
    D 匹配不是数字的字符
    B 匹配不是开始和结束的位置
    [^abc] 匹配除了abc之外的字符

    3. 量词

      * (贪婪):重复0次或更多

      +(占用):重复1次或更多

      ?(懒惰):匹配得越少越好,0次或1次

      {n}:重复N次,比如"a{3}",即取"aaa"

      {n, m}:重复n-m次,比如a{3, 4},即取"aaa"或"aaaa"

      {n,}:重复n次或更多次,无上限

    4. 懒惰限定符

      *?   重复任意次,但尽可能少重复 

          如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" 

      +?  重复1次或更多次,但尽可能少重复

         与上面一样,只是至少要重复1次

      ??  重复0次或1次,但尽可能少重复

          如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

      {n,m}?  重复n到m次,但尽可能少重复

              如 "aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

      {n,}?    重复n次以上,但尽可能少重复

              如 "aaaaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"

  • 相关阅读:
    linux安装jdk1.8
    Python中import
    Python时间
    Python学习Json
    Hive命令学习
    Hadoop系统中的一些概念
    Hadoop系统命令
    ssh无密码登录设置
    Python学习
    Linux Socket IPC
  • 原文地址:https://www.cnblogs.com/yukifun/p/12969193.html
Copyright © 2011-2022 走看看