目录
元字符:具有固定含义的特殊符号
符号
| 符号 | 描述 | 使用 |
|---|---|---|
| \ | 将下一个字符标记为一个特殊字符 或者将特殊字符标记为原义字符(即仅表示字符本身,无特殊含义) | \ +字符 \\表示匹配字符\,\(匹配字符( |
| ^ | 设置匹配字符串位置为开始位置 | ^示例 |
| $ | 匹配输入字符串的结束位置 | 注意,与^不同的是,匹配的字符串放在 $ 前,即匹配结尾为a的字符串应该是a$ |
| * | 匹配前面的子表达式零次或多次 | *示例 |
| + | 匹配前面的子表达式一次或多次 | |
| {n} | n 为非负整数,匹配确定的n次 | |
| {n,} | n 为非负整数,至少匹配n次 | {0,}等效于*,{1,}等效于+ |
| {n,m} | m 和 n 均为非负整数,其中n <= m,最少匹配 n 次且最多匹配 m 次 | |
| ? | 匹配前面的子表达式零次或一次 在限制符 (*, +, ?, {n,}, {n,m}) 后面时匹配模式为非贪婪模式 | 非贪婪模式:在满足表达式的情况下尽可能的匹配短字符串 (即如果是 *?则只匹配零次表达式,+?只匹配一次表达式,{2,4}?只匹配重复出现2次的表达式)非贪婪模式示例 |
| . | 匹配除回车换行符(\n、\r)之外的任何单个字符 | |
| (string) | 匹配括号内的字符串(即与括号内的字符串完全一致) 括号内的字符串匹配后会创建捕获分组(测试看不出来) 在string前可加入?、?=等进行其它匹配: str1(?=str2) 查找后面是str2的str1(?<=str2)str1 查找前面是str2的str1str1(?!str2) 查找后面不是str2的str1(?<!str2)str1 查找前面不是str2的str1str1(?:str2)效果和不加?:极其类似,但不会在匹配后创建捕获分组 | 注意:如果需匹配(),则在(和)前加上\将其标记为原义字符 |
| [string] | 字符集合,匹配所包含的任意一个字符 可以通过-匹配连续字符 可以在字符串前加^进行反向匹配 | 注意其与()的区别,[]匹配其中的任意一个字符,()匹配完全一致的字符串 []与()区别以及-和^的使用 |
| x|y | 匹配 x 或 y | z|food可匹配字符z或字符串food(z|f)ood则匹配字符串zood或food |
优先级(从高到低)
| 运算符 | 描述 |
|---|---|
| \ | 转义符 |
| (), (?: ), (?=), [ ] | 圆括号和方括号 |
| *, +, ?, {n}, {n,}, {n,m} | 限定符 |
| ^, $, \ | 任何元字符、任何字符 定位点和序列(即:位置和顺序) |
| | | "或"操作(即任意字符优先级高于或操作,包括用于匹配的普通字符) |
\ +字符
| 符号 | 描述 | 使用 |
|---|---|---|
| \b | 匹配一个单词边界,也就是指单词和非单词间的位置 | |
| \B | 匹配非单词边界,即匹配的字符串被字母包围 | \b和\B示例 |
| \cx | 匹配由 x 指明的控制字符。 x必须在[a-zA-Z]中,否则将 c 视为一个原义的 ‘c’ 字符 | 控制字符:参考百度百科中的US-ASCII控制字符 x非字母示例 |
| \d | 匹配一个数字字符。等价于 [0-9] | |
| \D | 匹配一个非数字字符。等价于 [^0-9] | \d和\D示例 |
| \f | 匹配一个换页符。等价于 \x0c 和 \cL | |
| \n | 匹配一个换行符。等价于 \x0a 和 \cJ | |
| \r | 匹配一个回车符。等价于 \x0d 和 \cM | |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] | |
| \S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] | |
| \t | 匹配一个制表符。等价于 \x09 和 \cI | |
| \v | 匹配一个垂直制表符。等价于 \x0b 和 \cK | |
| \w | 匹配字母、数字、下划线。等价于[A-Za-z0-9_] 注意:在有些地方使用时还会匹配汉字 | |
| \W | 匹配非字母、数字、下划线。等价于 [^A-Za-z0-9_] | |
| \xn | n为两位十六进制数,匹配以n为ASCII值的字符 | \xn示例 |
| \num | \前有字符串:对第 num个表达式的引用 \前无字符串:num在范围内(小于八进制数400Q)则匹配以num为八进制值对应的ASCII值的字符 | (.)\1 匹配两个连续的相同字符A\1等效于匹配AAabc\1等效于匹配abcaabc\2\3等效于匹配abcbc———————————— \141等效于匹配a |
| \un | n为四位十六进制数,匹配以n对应的Unicode 字符 | Unicode编码表 |
示例
^示例
看似有第二行,但实际上一二行间由换行符连接,因此只有一处匹配

*示例
zo*用于匹配字符串z与0个或任意个o

非贪婪模式示例



[]与()区别示例
(2612):匹配字符串2612
[2612]:匹配字符2、6、1

通过-匹配连续字符以及通过^进行反向匹配:
[1-3]即匹配字符1、2、3,[^1-3]即匹配除1、2、3之外的所有字符

\b和\B示例

此时,如果在never后加入其它字符,通过\b查找,同样可匹配一处

x非字母示例
如左图所示,当成普通的\c字符串进行匹配(右图为正常匹配控制字符,作为对比)

\d和\D示例
数字和非数字的匹配,注意,右图匹配非数字包括换行符,因此是4处匹配(特意把光标移到下一行方便查看)












