参考: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.cn | deerchao\.cn |
C:\Windows | C:\\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开头的字符串 |