小书童
发布时间

正则表达式语法

作者

用途

  • 校验数据的有效性
  • 查找符合要求的文本
  • 对文本进行切割和替换
  • ...

元字符分类

  • 特殊单字符
    1. . 任意字符(换行符除外)
    2. \d 任意数字 \D 任意非数字
    3. \w 任意字符数字下划线 \W 任意非字符数字下划线
    4. \s 任意空白符 \W 任意非空白符
  • 空白符
    1. \r 回车符
    2. \n 换行符
    3. \f 换页符
    4. \t 制表符
    5. \v 垂直制表符
    6. \s 任意空白符
  • 量词
    1. * 0到多次
    2. + 1到多次
    3. ? 0到1次
    4. {x} x次
    5. \{x,\} 至少x次
    6. {x,y} x到y次
  • 范围
    1. | 或
    2. [...] 多选一
    3. [a-z] a到z任意单个元素
    4. [^...] 取反,不能是其中任意一个元素
  • 断言(Assertion)
    1. 单词边界
    2. 行开始\结束
    3. 环视

模式

  • 贪婪匹配(Greedy):
    1. 表示次数的量词,默认都是贪婪,尝试尽可能最大长度去匹配
    2. 回溯:后面匹配不上,会回溯已匹配的再尝试
  • 非贪婪匹配(Lazy)
    1. 量词后面加?,尽可能短地去匹配
    2. 回溯:后面匹配不上,会匹配更长再接着尝试
  • 独占模式(Possessive)
    1. 量词后面加+,满足情况下尽可能长匹配
    2. 回溯:不回溯,匹配不上即失败

分组

  • 功能
    1. 将部分子表达式看成整体
    2. 后续查找替换中引用分组
  • 分组编号
    1. 第几个括号就是第几个分组
    2. 非捕获分组 (?:正则)
    3. 括号嵌套需要看左括号的序号
    4. 命名分组 (?P<名称>正则)
  • 分组引用
    1. 查找:查找重复出现的部分
    2. 替换:对原有内容格式进行改写

匹配模式

  • 不区分大小写模式(Case Insensitive)
    1. (?i)
  • 点号通配模式(Dot All)
    1. (?s)
  • 多行模式(Multiline)
    1. (?m)
    2. ^匹配开头 $匹配结尾
  • 注释模式(Comment)
    1. (?#comment)