正则表达式
1、字符组
[]
:允许匹配一组可能出现的字符- 示例:
[Pp]ython
=> 匹配大小写的python
2、区间
-
:匹配符合范围的字符,大小写敏感- 示例:
[0-9]
=> 匹配0-9之间的所有数字[a-z]
=> 匹配a-z之间的所有字母[a-zA-Z]
=> 大小写全部匹配
3、转义字符
4、非集(取反)
^
:匹配不在集合中的字符- 示例:
[^0-9]
=> 匹配0-9以外的字符,不包括0-9
5、快捷方式
符号 | 作用 |
---|
\d | 匹配所有数字 |
\w | 匹配所有字符,包含数字、大小写字符 |
\s | 匹配空白字符、含空格、tab、换行等 |
\b | 匹配单词边界。示例:\bmaster\b => 匹配所有边界的master单词 |
6、开始和结束
^
:指定的是一个字符串的开始$
:指定的是一个字符串的结束- 示例:
7、任意字符
.
:匹配单个字符,只能出现在[]
外
注:不能匹配换行符(\n)
8、可选字符
?
:指定一个字符、字符组或其他基本单元可选,匹配1次或0次- 示例:
9、匹配多个数据
{N}
:匹配在字符组后加上,表示它之前的字符组出现N次- 示例:
10、重复区间
注意⚠️:{}
后加?
,即当匹配到上界时就不再匹配,不加?
则为贪婪模式,尽可能多的匹配字符
11、速写
+ | 匹配1到无数个,即{1,} |
---|
* | 匹配0到无数个,即{0,} |
12、或者条件
|
:匹配多个条件中的1个条件- 示例:
(.jpg|.png)
=> 匹配jpg格式或者png格式的数据
13、非捕获分组
(?:表达式)
:不捕获数据,也能使用分组- 示例:
\b(?:\w|\w{4})\b
=> 匹配两个或个四个字母组成的单词
案例
(1)匹配所有手机号码
- 第一位须以1开头
- 第二位可以是
[3,4,5,7,8]
中的任意一个数字 - 后9位可以是
[0-9]
中任意一个数字
- 示例:
^1[34578]\d{9}
[34578]
=> 匹配[]
中可能出现的数字\d{9}
=> 匹配9次
(2)匹配网站地址
http.*/$
.
=> 匹配单个字符*
=> 匹配0到多个任意字符/$
=> 匹配以/
为结尾
(3)分组
()
:将表达式分组- 示例:
(\d{4})-(\d{7})
=> 分别匹配两组数据
(4)匹配学号
表达式 | 解释说明 |
---|
(\d{4})[\-\s]?(\d{4})[\-\s]?(\d{2}) | (匹配四次)匹配0-1个空格或-(匹配四次)匹配0-1个空格或-(匹配两次) |