正则表达式语法
普通字符
没有特殊限定的时候匹配一个相同的字符
简单转义字符
n | 换行符 |
---|---|
t | 制表符 |
字符 | 字符本身 |
标准字符集合
能够与多种字符匹配的表达式
区分大小写,大写取反
d | 0~9中任一字符 |
---|---|
w | 字母数字下划线,A~Z,a~z,0~9,_ |
s | 空格、制表符、换行符等任一空白符 |
. | 任何一个字符 |
自定义字符集合
[]匹配方式,匹配方括号中的任一字符
[ab5@] | 匹配"a"、"b"、"5"或"@" |
---|---|
[^abc] | 匹配"a"、"b"、"c"以外的任一字符 |
[f-k] | 匹配"f"~"k"中的任一字符 |
[^A-F0-3] | 匹配"A"~"F"、"0"~"3"以外的任一字符 |
特殊符号,被包含到中括号中,失去特殊意义,除"^"和"-"以外
标准字符集,除小数点外,如果被包含于中括号,自定义字符集包含该集合。如:
- [d.- ]将匹配:数字、小数点、"-" 、" "
量词
修饰匹配次数的特殊符号
{n} | 表达式重复n次 |
---|---|
{n,m} | 表达式至少n次,至多m次 |
{n,} | 表达式至少n次 |
? | 匹配0或1次 |
| 至少1次 |
* | 0次到任意次 |
匹配次数中的贪婪模式(匹配字符越多与好,默认)
匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后面加"?",例:"d?")
字符边界
字符所处的位置,零宽(不占位)
^ | 字符串开始 |
---|---|
$ | 字符串结束 |
b | 单词边界(前面和后面的字符不全是w) |
正则表达式匹配模式
IGNORECASE忽略大小写模式
- 匹配时忽略大小写
- 默认情况下,区分大小写
SINGLELINE单行模式
- 整个文本看作一个字符串
- 小数点“.”可匹配任一字符,包含“n”
MULTILINE多行模式
- 每行都是一个字符串,都有开头和结尾
- 匹配开始A,匹配结束Z
选择符和分组
| | 分支结构,表示“或”的关系 |
---|---|
() | 捕获组:1、括号中的作为整体2、取结果时,括号中的内容可以单独得到3、从左括号开始编号,第一个“(”是1,0为整个表达式 |
(?:expression) | 非捕获组,不保存()中的信息,节省内存开支 |
反向引用(nnn)
- 通过反向引用可以对分组已捕获的字符串进行引用
预搜索(零宽断言、环视)
对子表达式匹配,匹配内容不计入匹配结果,零宽
(?=exp) | 后面能匹配表达式exp |
---|---|
(?<=exp) | 前面能匹配表达式exp |
(?!exp) | 后面不能匹配表达式exp |
(?<!exp) | 前面不能匹配表达式exp |