首页 > 技术文章 > 读《精通正则表达式(第三版)》笔记

cag2050 2018-12-06 10:22 原文

  • 字符组[]与多选结构()的区别:
    一个字符组只能匹配目标文本中的单个字符,
    而每个多选结构自身都可能是完整的正则表达式,都可以匹配任意长度的文本。

  • 多选结构()后面如果没有量词(?、*、+),可以去掉()
    因此:/(abc)/等价于/abc/

  • 问:
    [^xxx]:匹配一个不是x的字符,还是匹配一个不是xxx的字符?
    答:
    元字符作用于紧邻的字符,因此[^xxx]:匹配一个不是x的字符
    如果想匹配一个不是xxx的字符,可以用多选结构()[^(xxx)]

  • 区别:
    ^q:以q开头
    [^q]:不是字符q(在字符组中,表示不是的意思)

  • 区别:
    [q|Q]:q或|或Q
    [qQ]:匹配q或Q,等价于(q|Q)

  • 区别:
    12.05:点号代表任意字符
    [12.05]:字符组里,元字符点号只是代表点号

  • 区别:
    [0-9]:连字符不在字符组的开头,就是表示范围
    [-0-9]:匹配连字符和一个数字

  • [0-9]等同于\d:代表一位数字;
    [a-z0-9A-Z_]等同于\w(如果只考虑英文的话):代表一个数字、英文字母或下划线

  • [\\/] 代表可以是\也可以是/

  • ():匹配并捕获,?::匹配非捕获,?=:非匹配

  • /\.js(\?.*)?$/匹配:.js、.js?、.js?xxx
    .:任意一个字符
    .*:0个或多个字符

推荐阅读