参考:https://deerchao.cn/tutorials/regex/regex.htm

正则表达式是什么

正则表达式就是记录文本规则的代码。

测试正则表达式

在线测试工具:wegester

元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

:

查找目标正则表达式
hi后面不远处跟着一个Lucy\bhi\b.*\bLucy\b
以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字0\d\d-\d\d\d\d\d\d\d\d 或 0\d{2}-\d{8}
匹配以字母a开头的单词\ba\w*\b
1个或更多连续的数字\d+
刚好6个字符的单词\b\w{6}\b
整个字符串是5到12位数字^\d{5,12}$

字符转义

例:

查找目标正则表达式
deerchao.cndeerchao\.cn
C:\WindowsC:\\Windows

重复

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

例:

正则表达式查找目标
Windows\d+Windows后面跟1个或更多数字
^\w+一行的第一个单词

字符类

例:

正则表达式查找目标
[aeiou]任何一个英文元音字母
[0-9]一位数字
(?0\d{2}[) -]?\d{8}几种格式的电话号码

分枝条件

匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

例:

正则表达式查找目标
0\d{2}-\d{8}|0\d{3}-\d{7}三位区号,8位本地号 或 4位区号,7位本地号
\d{5}-\d{4}|\d{5}美国邮编的规则是5位数字,或者用连字号间隔的9位数字

分组

可以用小括号来指定子表达式(也叫做分组)

例:

正则表达式查找目标
(\d{1,3}.){3}\d{1,3}简单的IP地址匹配
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)正确的IP地址

反义

代码说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

例:

正则表达式查找目标
\S+不包含空白符的字符串
<a[^>]+>用尖括号括起来的以a开头的字符串

后向引用