正则表达式
正则表达式是一种用于匹配字符的工具,通常用于字符串的匹配检索、替换、分割等操作,也可以用来验证字符串是否符合某种规则。这在文本数据处理中非常有用。
基本规则
匹配项
一个正则表达式由一个或者多个匹配项(子表达式)组成。
bash
ab\d+.\n$这个正则表达式分为以下几个匹配项:
ab表示匹配字符 ab\d+表示匹配一个或多个数字.表示匹配一个任意字符\n表示匹配一个换行符
$是修饰符,表示整个表达式要匹配字符串的结尾。
bash
^[a-z|0-9]\n(@|\d|-|_)+这个正则表达式分为以下几个匹配项:
[a-z|0-9]表示匹配一个小写字母或数字\n表示匹配一个换行符(@|\d|-|_)+表示匹配一个或多个字符,字符类型为:@、数字、-、_
^是修饰符,表示整个表达式要匹配字符串的开始。
元字符
元字符是正则表达式中的特殊字符有特殊含义,类似编程语言中的关键字。
提示
当需要匹配元字符本身时,需要使用反斜杠 \ 进行转义。
bash
\[ \* \( \) \] \+ \\ \? \. \^ \$以上表示直接匹配对应的字符:[、*、(、)、]、+、\、?、.、^、$。
通配符
通配符是正则表达式中的特殊字符,用于匹配一种类型的字符。
\d: 匹配一个数字\w: 匹配一个字母、数字或下划线\s: 匹配一个空白字符\b: 匹配一个单词边界 ...
运算符
运算符是正则表达式中的特殊字符,用于计算一个或多个匹配项并得到一个最终的匹配项。
|: 或运算(): 分组[]: 范围{}: 重复,{n}表示匹配n次,{n,}表示匹配n次或更多次,{n,m}表示匹配n次到m次\: 转义*,+: 重复,*表示匹配0个或多个,+表示匹配1个或多个
提示
正则表达式默认就是与运算,所以没有表示与运算的符号。例如,ab 表示匹配字符 a 和字符 b 的组合。
修饰符
修饰符是正则表达式中的特殊字符,用于限定匹配项的匹配范围或方式。
^: 匹配开始$: 匹配结束?: 尽可能少匹配
?是修饰符,表示尽可能少匹配。(abc)?表示依次匹配空字符串,a,ab,abc。
常用正则表达式
- 匹配数字
bash
# 匹配一个数字
\d- 匹配字母
bash
# 匹配一个字母
[a-zA-Z]- 匹配中文字符
bash
# 匹配一个中文字符
[\u4e00-\u9fa5]- 匹配特殊字符
bash
# 匹配一个特殊字符
[!@#$%^&*()_+-=[]{}|;:,.<>?]- 匹配空白字符
bash
# 匹配一个空白字符
\s- 匹配任意字符
bash
# 匹配一个任意字符
.- 匹配开始和结束
bash
# 匹配开始
^ 开头
# 匹配结束
结尾 $- 匹配重复和指定数量
bash
# 匹配一个或多个数字
\d+
# 匹配三个空白字符
\s{3}
# 匹配三个或更多的空白字符
.{3,}
# 匹配三个到五个字母,但尽可能多匹配(优先匹配 5 个)
[a-zA-Z]{3,5}
# 匹配三个到五个字母开头,结尾
^[a-zA-Z]{3,5}
# 匹配三个到五个字母结尾,但尽可能少匹配(优先匹配 3 个)
[a-zA-Z]{3,5}?$- 匹配邮箱
bash
# 匹配一个邮箱 形如:xxx@xxx.xxx
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}- 匹配手机号
bash
# 匹配一个手机号 形如:1 x xxxxxxxxx
1[3-9]\d{9}- 匹配域名
bash
# 匹配一个简单的域名 形如:http(s)://xxx.xxx
^(https|http)://[-a-zA-Z0-9._]{1,256}\.[a-zA-Z]{1,6}$最后
建议直接使用 AI 生成正则表达式,而不是手动编写。