Skip to content

正则表达式


正则表达式是一种用于匹配字符的工具,通常用于字符串的匹配检索、替换、分割等操作,也可以用来验证字符串是否符合某种规则。这在文本数据处理中非常有用。

基本规则

匹配项

一个正则表达式由一个或者多个匹配项(子表达式)组成。

bash
ab\d+.\n$

这个正则表达式分为以下几个匹配项:

  1. ab 表示匹配字符 ab
  2. \d+ 表示匹配一个或多个数字
  3. . 表示匹配一个任意字符
  4. \n 表示匹配一个换行符

$ 是修饰符,表示整个表达式要匹配字符串的结尾。


bash
^[a-z|0-9]\n(@|\d|-|_)+

这个正则表达式分为以下几个匹配项:

  1. [a-z|0-9] 表示匹配一个小写字母或数字
  2. \n 表示匹配一个换行符
  3. (@|\d|-|_)+ 表示匹配一个或多个字符,字符类型为:@数字-_

^ 是修饰符,表示整个表达式要匹配字符串的开始。

元字符

元字符是正则表达式中的特殊字符有特殊含义,类似编程语言中的关键字。

提示

当需要匹配元字符本身时,需要使用反斜杠 \ 进行转义。

bash
\[ \* \( \) \] \+ \\ \? \. \^ \$

以上表示直接匹配对应的字符:[*()]+\?.^$

通配符

通配符是正则表达式中的特殊字符,用于匹配一种类型的字符。

  1. \d : 匹配一个数字
  2. \w : 匹配一个字母、数字或下划线
  3. \s : 匹配一个空白字符
  4. \b : 匹配一个单词边界 ...

运算符

运算符是正则表达式中的特殊字符,用于计算一个或多个匹配项并得到一个最终的匹配项。

  1. | : 或运算
  2. () : 分组
  3. [] : 范围
  4. {} : 重复,{n}表示匹配n次,{n,}表示匹配n次或更多次,{n,m}表示匹配n次到m次
  5. \ : 转义
  6. *,+ : 重复,*表示匹配0个或多个,+表示匹配1个或多个

提示

正则表达式默认就是与运算,所以没有表示与运算的符号。例如,ab 表示匹配字符 a 和字符 b 的组合。

修饰符

修饰符是正则表达式中的特殊字符,用于限定匹配项的匹配范围或方式。

  1. ^ : 匹配开始
  2. $ : 匹配结束
  3. ? : 尽可能少匹配

? 是修饰符,表示尽可能少匹配。 (abc)? 表示依次匹配 空字符串aababc

常用正则表达式

  1. 匹配数字
bash
# 匹配一个数字
\d
  1. 匹配字母
bash
# 匹配一个字母
[a-zA-Z]
  1. 匹配中文字符
bash
# 匹配一个中文字符
[\u4e00-\u9fa5]
  1. 匹配特殊字符
bash
# 匹配一个特殊字符
[!@#$%^&*()_+-=[]{}|;:,.<>?]
  1. 匹配空白字符
bash
# 匹配一个空白字符
\s
  1. 匹配任意字符
bash
# 匹配一个任意字符
.
  1. 匹配开始和结束
bash
# 匹配开始
^ 开头
# 匹配结束
结尾 $
  1. 匹配重复和指定数量
bash
# 匹配一个或多个数字
\d+
# 匹配三个空白字符
\s{3}
# 匹配三个或更多的空白字符
.{3,}
# 匹配三个到五个字母,但尽可能多匹配(优先匹配 5 个)
[a-zA-Z]{3,5}
# 匹配三个到五个字母开头,结尾
^[a-zA-Z]{3,5}
# 匹配三个到五个字母结尾,但尽可能少匹配(优先匹配 3 个)
[a-zA-Z]{3,5}?$
  1. 匹配邮箱
bash
# 匹配一个邮箱 形如:xxx@xxx.xxx
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  1. 匹配手机号
bash
# 匹配一个手机号 形如:1 x xxxxxxxxx
1[3-9]\d{9}
  1. 匹配域名
bash
# 匹配一个简单的域名 形如:http(s)://xxx.xxx
^(https|http)://[-a-zA-Z0-9._]{1,256}\.[a-zA-Z]{1,6}$

最后

建议直接使用 AI 生成正则表达式,而不是手动编写。