约 4370 字
约 22 分钟
正则表达式(Regular Expression) 是一种用于匹配和处理文本的强大工具,它使用特定语法构成的字符串来定义搜索模式。
例如表单校验中检查输入的邮箱地址是否正确,逐个字符进行校验十分繁琐,可以使用正则表达式 ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
进行校验。
import re
# 验证电子邮件格式
email_pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' # 正则表达式
if re.match(email_pattern, "[email protected]"):
print("有效邮箱")
Loading...
元字符 | 含义 | 示例 |
---|---|---|
. | 匹配任意一个字符(除换行符) | a.c -> abc , a1c |
^ | 匹配字符串开头 | ^abc -> abcxxxx |
$ | 匹配字符串结尾 | abc$ -> xxxxabc |
* | 匹配前一个字符出现 0次或多次 | a* -> "" , a , aa |
+ | 匹配前一个字符出现 1次或多次 | a+ -> a , aa |
? | 匹配前一个字符 0次或1次 | a? -> "" , a |
{n} | 匹配前一个字符 n 次 | a{2} -> aa |
{min, } | 匹配前一个字符 至少 min 次 | a{2,} -> aa , aaa , aaaa |
{min, max} | 匹配前一个字符 min 次至 max 次 | a{2,3} -> aa , aaa |
[] | 匹配括号内的任意一个字符 | [abc] -> a , b , c |
[^] | 匹配不在括号内的任意一个字符 | [^abc] -> d , e , f |
[-] | 表示范围 | [a-z] -> a , b , y , z |
() | 分组 | (abc)+ -> abc , abcabc |
| | 或 | abc|xyz -> abc , xyz |
\d | 匹配任意数字,等价于 [0-9] | \d -> 1 , 2 , 3 |
\D | 匹配任意非数字,等价于 [^0-9] | \D -> a , b , _ , @ |
\w | 匹配任意字母、数字、下划线,等价于 [a-zA-Z0-9_] | \w -> a , 1 , _ |
\W | 匹配任意非字母、数字、下划线,等价于 [^a-zA-Z0-9_] | \W -> @ , # |
\s | 匹配任意空白字符(空格,\n , \r , \t 等) | \s -> |
\S | 匹配任意非空白字符 | \S -> a , 1 ,@ |
\b | 匹配单词边界 | \bcat\b -> This is a cat 中的 cat |
\B | 匹配非单词边界 | \Bcat\B -> scatter 中的 cat |
\r | 回车符 | |
\n | 换行符 | |
\f | 换页符 | |
\t | 制表符 | |
\v | 垂直制表符 | |
\ | 转义字符,使后面的特殊字符表示字符本身而非特殊含义 | \+ -> + |
在默认情况下,使用贪婪模式,即可以匹配不同长度时匹配最长的长度。如果追加额外的 ?
则使用懒惰模式,即可以匹配不同长度时匹配最短的长度。
贪婪模式 | 说明 | 懒惰模式 | 说明 |
---|---|---|---|
.* | 零次或多次,取最长匹配 | .*? | 零次或多次,取最短匹配 |
.+ | 一次或多次,取最长匹配 | .+? | 一次或多次,取最短匹配 |
.? | 零次或一次,取最长匹配 | .?? | 零次或一次,取最短匹配 |
.{n,m} | n 至 m 次,取最长匹配 | .{n,m}? | n 至 m 次,取最短匹配 |
.{n,} | 至少 n 次,取最长匹配 | .{n,m}? | 至少 n 次,取最短匹配 |
创建于 2025/5/13 17:01:14
更新于 2025/5/13 17:01:14