正则基础
字符匹配、分组和引用、锚点/边界、数量表示、预查断言、特殊标志等基本规则
2026.06.02 18:383 分钟阅读normal#正则表达式#基础知识 正则表达式基本规则
字符匹配
| 规则 |
描述 |
| [abc] |
字符集,匹配集合中所含的任一字符 |
| [^abc] |
否定字符集,匹配任何不在集合中的字符 |
| [a-z] |
字符范围,匹配指定范围内的任意字符 |
| . ? |
匹配除换行符以外的任何单个字符 |
| \ ? |
转义字符 |
| \w ? |
匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_]) |
| \W ? |
匹配任何非字母数字(等价于[^A-Za-z0-9_]) |
| \d ? |
数字,匹配任何数字 |
| \D ? |
非数字,匹配任何非数字字符 |
| \s ? |
空白,匹配任何空白字符,包括空格、制表符等 |
| \S ? |
非空白,匹配任何非空白字符 |
分组和引用
| 规则 |
描述 |
| (expression) |
分组,匹配括号里的整个表达式 |
| (?:expression) |
非捕获分组,匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用 |
| \num |
对前面所匹配分组的引用,比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep |
锚点/边界
| 规则 |
描述 |
| ^ |
匹配字符串或行开头 |
| $ |
匹配字符串或行结尾 |
| \b |
匹配单词边界:如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep |
| \B |
匹配非单词边界:比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code |
数量表示
| 规则 |
描述 |
| ? |
匹配前面的表达式0个或1个,即表示可选项 |
| + |
匹配前面的表达式至少1个 |
| * |
匹配前面的表达式0个或多个 |
| | |
或运算符,并集,可以匹配符号前后的表达式 |
| {m} |
匹配前面的表达式m个 |
| {m,} |
匹配前面的表达式最少m个 |
| {m,n} |
匹配前面的表达式最少m个,最多n个 |
预查断言
| 规则 |
描述 |
| (?=) |
正向预查,如Code(?=Sheep)匹配CodeSheep中的Code,但不匹配CodePig中的Code |
| (?!) |
正向否定预查,如Code(?!Sheep)不匹配CodeSheep中的Code,但能匹配CodePig中的Code |
| (?<=) |
反向预查,如(?<=Code)Sheep匹配CodeSheep中的Sheep,但不匹配ReadSheep中的Sheep |
| (?<!) |
反向否定预查,如(?<!Code)Sheep不匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep |
特殊标志
| 规则 |
描述 |
| /.../i |
忽略大小写 |
| /.../g |
全局匹配 |
| /.../m |
多行修饰符,用于多行匹配 |