1.普通字符
数字、字母、下划线、中文。。。
\n 换行符
\t 制表符(也就是tab键)
\\ 表示"\"本身
\^,\$,\{,\}... 匹配字符本身
2.标准字符
\d 0~9中的任意一个数字
\D 非数字
\w 任意一个字母、数字、下划线、中文
\W 除了以上之外
\s 空格符、制表符、换行符等空白符中的任意一个
\S 除了空白符之外
. 匹配任意一个字符,所有的都匹配
3.自定义字符集
[] : 表示自定义字符集
ex: [abd] 表示匹配abd中的任意一个字符,他们是“或”的关系
^ : 在自定义字符集中是取反的意思
ex: [^abd] 表示匹配除了abd的任意字符,包括空白字符
- :表示重什么到什么一般 0-9 a-z A-Z
ex: [a-z] 表示匹配26个小写字母中的任意一个
[^0-9] 表示除了0-9数字之外的任何
4:修改匹配次数
{} : 表示修改匹配的次数
{n} : 表达式重读n次
{m,n}: 表达式至少重复m次,最多n次
ex: \d{m,n} 数字最少m个,最多n个
{m,} : 表达式至少重复m次,多了不限
? : 匹配0次或1次,相当于{0,1}
+ : 表达式至少出现1次,相当于{1,}
* : 表达式出现任意次,包括0,相当于{0,}
5:模式
贪婪模式:默认匹配符合表达式的最长的字符
非贪婪模式:反之
ex:在匹配次数的后面加上"?"就可以取消贪婪模式
\d{2,4}? 以最少次数2匹配
\d+? 以最少次数1匹配
\d*? 以最少次数0匹配
a\d{2,4}?b 这种表达式在匹配的时候要先匹配整个表达式
6:匹配模式
ignorecase 忽略大小写模式
ex: (?i) [a-z] (?-i)
?i 开启忽略大小写
?-i 关闭忽略大小写
singleline 单行模式 将所有的字符串当做一行字符串,只有一个开头和结尾
multiline 多行模式 每行都有开头和结尾
7:字符边界
^ : 匹配字符串开始的位置,与自定义的"^"不同
ex: ^ab 匹配以ab开头
$ : 匹配字符串的结尾 -- 记住默认是单行模式只有一个结尾
ex: ab$ 以ab结尾,并匹配ab
\b: 匹配一个单词边界
ex: boy\b 匹配boy的"右边"不是\w的其他字符
8:选择符和分组
(): 分组的意思
| : 或的意思
ex: (0\d{2,3}-\d{7,8}) | (1[34578]\d{9}) 匹配前面的表达式或后面的表达式
9:反向引用 每一对()会分配一个编号,会根据左括号的顺序自动从1开始编
\数字 :将前面的第几个分组引用下,就不用重写了
ex: <([a-zA-Z]+)> .+ </\1> 这里\1就是将前面的分组引用过来
([a-z]{2}) \1 将前面的重复1次
10:预搜索(零宽断言) 是对位置的匹配
(?=exp) :断言自身出现的位置的后面能匹配表达式exp
ex:[a-z]+(?=ing) 后面应该有ing,但是不会匹配
(?<=exp) :断言自身出现的位置的前边能匹配表达式exp
ex:(?<=_)[a-z]+ 匹配前面有"_"的字符
(?!exp) :断言此位置的后面不能匹配表达式exp
(?<!exp):断言此位置的前面不能匹配表达式exp
11:练习
1: 匹配首尾空格
(^\s+)|(\s+$)
数字、字母、下划线、中文。。。
\n 换行符
\t 制表符(也就是tab键)
\\ 表示"\"本身
\^,\$,\{,\}... 匹配字符本身
2.标准字符
\d 0~9中的任意一个数字
\D 非数字
\w 任意一个字母、数字、下划线、中文
\W 除了以上之外
\s 空格符、制表符、换行符等空白符中的任意一个
\S 除了空白符之外
. 匹配任意一个字符,所有的都匹配
3.自定义字符集
[] : 表示自定义字符集
ex: [abd] 表示匹配abd中的任意一个字符,他们是“或”的关系
^ : 在自定义字符集中是取反的意思
ex: [^abd] 表示匹配除了abd的任意字符,包括空白字符
- :表示重什么到什么一般 0-9 a-z A-Z
ex: [a-z] 表示匹配26个小写字母中的任意一个
[^0-9] 表示除了0-9数字之外的任何
4:修改匹配次数
{} : 表示修改匹配的次数
{n} : 表达式重读n次
{m,n}: 表达式至少重复m次,最多n次
ex: \d{m,n} 数字最少m个,最多n个
{m,} : 表达式至少重复m次,多了不限
? : 匹配0次或1次,相当于{0,1}
+ : 表达式至少出现1次,相当于{1,}
* : 表达式出现任意次,包括0,相当于{0,}
5:模式
贪婪模式:默认匹配符合表达式的最长的字符
非贪婪模式:反之
ex:在匹配次数的后面加上"?"就可以取消贪婪模式
\d{2,4}? 以最少次数2匹配
\d+? 以最少次数1匹配
\d*? 以最少次数0匹配
a\d{2,4}?b 这种表达式在匹配的时候要先匹配整个表达式
6:匹配模式
ignorecase 忽略大小写模式
ex: (?i) [a-z] (?-i)
?i 开启忽略大小写
?-i 关闭忽略大小写
singleline 单行模式 将所有的字符串当做一行字符串,只有一个开头和结尾
multiline 多行模式 每行都有开头和结尾
7:字符边界
^ : 匹配字符串开始的位置,与自定义的"^"不同
ex: ^ab 匹配以ab开头
$ : 匹配字符串的结尾 -- 记住默认是单行模式只有一个结尾
ex: ab$ 以ab结尾,并匹配ab
\b: 匹配一个单词边界
ex: boy\b 匹配boy的"右边"不是\w的其他字符
8:选择符和分组
(): 分组的意思
| : 或的意思
ex: (0\d{2,3}-\d{7,8}) | (1[34578]\d{9}) 匹配前面的表达式或后面的表达式
9:反向引用 每一对()会分配一个编号,会根据左括号的顺序自动从1开始编
\数字 :将前面的第几个分组引用下,就不用重写了
ex: <([a-zA-Z]+)> .+ </\1> 这里\1就是将前面的分组引用过来
([a-z]{2}) \1 将前面的重复1次
10:预搜索(零宽断言) 是对位置的匹配
(?=exp) :断言自身出现的位置的后面能匹配表达式exp
ex:[a-z]+(?=ing) 后面应该有ing,但是不会匹配
(?<=exp) :断言自身出现的位置的前边能匹配表达式exp
ex:(?<=_)[a-z]+ 匹配前面有"_"的字符
(?!exp) :断言此位置的后面不能匹配表达式exp
(?<!exp):断言此位置的前面不能匹配表达式exp
11:练习
1: 匹配首尾空格
(^\s+)|(\s+$)