正则表达式的符号表
序号 | 符号 | 匹配对象 | 示例 |
---|---|---|---|
1 | ^ | 字符串起始位置 | 当^出现在[]内部时,为取反。 |
2 | [0-9] | 匹配一个数字,没有数字时,匹配失败 | 等价\d;[^0-9]等价\D |
3 | [0-9]? | 匹配0或1个数字,没有数字时可以匹配 | |
4 | [0-9]+ | 匹配1或多个数字,没有数字时匹配失败 | |
5 | abc$ | 结尾匹配,要求以abc作为结尾 | |
6 | * | ==可以不出现==,可以出现多次。 | X*YZ可以成功匹配YZ |
7 | \cX | 控制字符,匹配Control + X | \cA匹配Control + A |
8 | \f \n \r | 换页 换行 回车 | |
9 | \s | 匹配任何空白字符 | 等价:[\f\n\r\t\v] |
10 | \S | 匹配任何非空白字符 | 等价:[^ \f\n\r\t\v] |
11 | \t \v | 匹配水平制表符、垂直制表符 | |
12 | () | 子表达式,可以将表达式看做一个单元 | (abc)*:匹配0到多个abc |
13 | . | ==匹配除换行符以外的任何单字符== | |
14 | [^] | 位于中括号之内的^,表示拒绝匹配该[]内的内容 | |
15 | | | 两项之间选择其一进行匹配,逻辑或 | |
16 | {} | 标记限定符,会用于限定需要对某个模式进行匹配多少次 | |
17 | \b | 匹配单词的前或后边界(即单词与空格之间的边界、空白指出) | \bFoo:匹配以Foo开始的单词 |
18 | \B | \b的相反:任何不是边界的都可以匹配 | 在单词FooBar中执行\BoBa可以成功匹配单词FooBar |
19 | \num \1 | 调用子表达式,即调用()的东西 | |
20 | \w | 匹配字母数字下划线 | 等价[0-9a-zA-Z_];取反:\W、[^0-9a-zA-Z _] |
misc
- 注意:* 可以不出现,即abc*可以对ab匹配成功!
- 同上,? 也可以不出现,即abc?可以对ab匹配成功。区别在于* 可以匹配多个,而?匹配0或1个。
- ==特殊字符出现在[]内时,其功能会转换为普通的字符。如[.]就只表示匹配字符’.’,而’.’的原意是除换行符之外的任何单字符==。
- ==[xyz]也是表示范围,表示可以匹配x或y或z中的任意一个字符,并不是表示只能匹配’xyz’==
() [] {} 的理解和区别
{} 限定符
- 限定符其实就是用来限定模式需要匹配多少次的。
- 用法:{n,m}匹配n到m次,{n}匹配n次,{n,}匹配最少n次。
- *:相当于{0,}, +:相当于{1,}, ?:相当于{0,1}。
- 示例:Class[1-2][0-9]{1}
() 子表达式
- ()内可以像写其他表达式一样,整个()组成子表达式。
- 每个()子表达式都根据其位置拥有一个编号,可以使用\number来调用这个子表达式
- 示例:”(\b[a-z]+) \1\b” # \1调用子表达式
[] 范围表达式
- 内部可以指定一个匹配范围、匹配序列。