regex overview

634 阅读2分钟

推荐

规范

  • 优先考虑 懒惰模式 ?

正则表达式有一条比懒惰/贪婪规则优先级更高的规则:最先开始的匹配拥有最高的优先权。 如 a.+?c -> ababc 将匹配 整个字符串 ababc。

  • 优先考虑 非捕获组 (?:)

学习

  1. 某个字符后的数量限定符用来限定前面这个字符允许出现的个数(不是出现个数),不加数量限定则代表出现一次且仅出现一次。
  2. 后向引用用于重复搜索前面某个分组匹配的文本,\num代表重复内容;+,*,{num} 等重复匹配只是重复语法。

语法

  • 符号优先权

    优先权符号
    最高\
    ()(?:)(?=)[]
    *+?{n}{n,}{n,m}
    ^$中介字符
    次最低串接,即相邻字符连接在一起
    最低|
  • 简写字符集

    字符说明
    \s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
    \S匹配任何非空白字符。等价于[^ \f\n\r\t\v]
    \d匹配一个数字字符
    \D匹配一个非数字字符
    \w匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]
    \W匹配任何非单词字符。等价于[^A-Za-z0-9_]
    \b匹配一个单词边界,也就是指单词和空格间的位置
    \B匹配非单词边界
  • 零宽断言

    字符说明
    (?=exp)断言自身出现的位置的后面能匹配表达式 exp。匹配 exp 前面的位置
    (?<=exp)断言自身出现的位置的前面能匹配表达式 exp。匹配 exp 后面的位置
    (?!exp)断言此位置的后面不能匹配表达式 exp。匹配后面跟的不是 exp 的位置
    (?<!exp)断言此位置的前面不能匹配表达式 exp。匹配前面不是 exp 的位置