字符类
字符类: 匹配特定集合中的字符。 有许多预定义的字符类,您也可以定义自己的字符集。
- . 匹配除了换行符(\n)以外的任意一个字符
- \w\d\s 任意一个字母或数字或下划线,也就是 AZ,az,0~9,_ 中任意一个, 任意一个数字,0~9 中的任意一个, 包括空格、制表符、换页符等空白字符的其中任意一个
- \W\D\S 非 字母, 数字, 空白字符
- [abc] 匹配a、 b、或c中的任何一个
- [^abc] 匹配 a、b和c之外的任何一个
- [a-g] a和g之间的任意一个字符
锚
锚: 定类比较特殊,它匹配位置,而不是字符。
- ^abc$ 字符串的开头/结尾
- \b\B 单词边界、非单词的边界
转义字符
- `.*\ 转义特殊字符
- \t\n\r 制表符, LF换行符, CR换行符
分组 & 前瞻后顾
分组: 允许你把一系列的标记一起处理。捕获分组可以用反向引用单独地在结果中使用。
前瞻: 查找允许主表达式前或之后的组,而不将其包含在结果中。
后顾: 查找指定一个表达式之前或之后无法匹配的组。
- (abc) 捕获分组
- \1 反向引用#1的分组
- (?:abc) 不捕获分组
- (?=abc) 正向前瞻
- (?!abc) 负向前瞻
量词 & 分支
量词: 指定了前面的标记需要出现的次数。默认情况下,量词是贪婪的,会尽可能多地匹配字符。
- a*a+a?
- * 0个或更多
- + 1个或更多
- ? 0个或1个
- a{5}a{2,}
- {5} 刚好5个,
- {2,} 2个或以上
- a{1,3} 1~3个
- a+?a{2,}? 非贪婪匹配(仅可能少匹配)
- ab|cd 匹配 ab 或 cd