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

    一、什么是正则表达式

      正则表达式(Regular Expression):强大的文本处理工具。
            模式匹配和替换的强大工具。

      linux中主要通过 grep 来发挥正则表达式(以行为单位)的强大功能!

      注意,这里的*等表示的是量词单位,不是之前提到的通配符,在正则表达式里请不要与通配符混淆!

    二、正则表达式入门

      两部分组成:
        1.原义文本字符
        2.元字符

      []  一类,即符合一个都行 [abc] 符合一个都行
      [^] 负向类,即取反 [^abc] a b c 以外的都行
      [a-z] 范围类,是一个闭区间,支持连写 [a-zA-Z] 所有大小写字符,想匹配的比如本身就有-等
        就直接在后面加- [0-9-]

      g 全局查找 i 忽略大小写 m 多行处理
      预定义类:
        . 回车换行之后的所有字符
        d 数字字符0-9
        D 非数字字符
        s 空白符 space
        S 非空白符
        w 数字字符下划线 word
        W 非数字字符下划线

      边界
         单词边界(bound)
        B 非单词边界
        ^ 以xxx开始
        $ 以xxx结束

      量词
        ? 0次或者1次
        + 1次或者多次
        * 任意次
        {n} 出现了n次
        {n,} 至少出现了n次
        {n,m} n次到m次

      贪婪模式:123456 d{3,6} 会匹配6次,尽可能多地匹配 默认模式
      非贪婪模式:d{3,6}? 非贪婪模式,匹配3次就不匹配了

      分组:Byron{3} 默认匹配n字符,采用分组匹配整个单词 (Byron){3}

      或 | 使用分组限制或的范围,不然默认整个正则表达式左右两个部分或 Byr(on|Ca)rry

      反向引用 $1 $2 $n等表示第n个分组的内容,(其它语言大同小异 如1表示分组1的文本)

      忽略分组,在分组前加?: (?: Byron)

      前瞻:正则表达式在匹配时向前检查是否符合断言
      正向前瞻 exp(?=assert) exp 与assert都是正则表达式,断言部分不匹配,只是作为断言
      负向的 exp(?!assert)
      后顾相反

       完整正则表达式字符,参考http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

      常用正则表达式:

        http://blog.csdn.net/onebigday/article/details/5429868/

      【推荐】:https://www.8090mc.cn/181.html

      正则表达式在线测试工具:

        http://tool.oschina.net/regex

    四、Java正则表达式

      Java中的正则表达式,记得使用转义:例如:\d{17}

      通常更情况下,String可以直接使用matchs方法匹配一个正则

      使用细节,参考:https://blog.csdn.net/qq_18298439/article/details/88974940

  • 相关阅读:
    DHCP服务器
    继承、抽象、多态
    范围随机数Random
    阿里、北理工、清华以及华为的镜像站
    创建kafka生产对象
    kafka消费者的配置
    Kafka 流数据 SQL 引擎 -- KSQL
    认证maven工程
    基础算法
    Java基础
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6798912.html
Copyright © 2011-2022 走看看