正则表达式
正则表达式匹配模式
干嘛那么累,把这几个记住就行了!!!
模式 | 描述 |
---|---|
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾。 |
. | 匹配除 “n” 之外的任何单个字符。 |
[…] | 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,’m’或’k’ |
[^…] | 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 |
a| b | 匹配a或b |
w | 匹配字母数字及下划线 等价于'[A-Za-z0-9_]’ |
W | 匹配非字母数字及下划线 等价于 ‘[^A-Za-z0-9_]’。 |
s | 匹配任意空白字符,等价于 [ tnrf]。 |
S | 匹配任意非空字符 |
d | 匹配任意数字,等价于 [0-9]. |
D | 匹配任意非数字 |
python中使用正则表达式的函数
re.match()
re.search(pattern, string)
: 在字符串中搜索与模式匹配的第一个位置。如果匹配成功,返回一个Match
对象;否则,返回None
。
re.search()
re.search(pattern, string)
: 在字符串中搜索与模式匹配的第一个位置。如果匹配成功,返回一个Match
对象;否则,返回None
。
re.findall()
re.findall(pattern, string)
: 查找字符串中所有与模式匹配的位置,并返回一个包含所有匹配结果的列表。
re.sub()
re.sub(pattern, repl, string)
: 在字符串中查找与模式匹配的位置,并用repl
替换它们。
re.split()
re.split(pattern, string)
: 根据模式将字符串分割为子字符串,并返回一个列表。
案例
匹配邮箱
匹配邮箱:任意字母数字@任意字母数字.任意字母
import re
email1 = "hhhhhhhhh@example.com" #正例
email2 = "invalid_email.com" #反例
email3 = "test@sub.example.com" #反例
pattern = r'^[w^_]+@[0-9a-zA-Z]+.[w^_^0-9]+$' #开头匹配任意个字母数字+@+任意字母数字下划线+转义.+任意字母
match = re.match(pattern, email1)
print("邮箱地址有效") if match is not None else print("邮箱地址无效")
匹配身份证
身份证匹配:连续的17个数字,最后一个可以是X或x或数字
import re
def validate_id_card(id_card):
pattern = r'^d{17}(d|X|x)$'
match = re.match(pattern, id_card)
if match:
print("身份证号码有效")
else:
print("身份证号码无效")
# 测试身份证号码
id_card1 = "110101199001011234" #有效
id_card2 = "11010119900101123X" #有效
id_card3 = "12345678901234567" #少一位
validate_id_card(id_card1)
validate_id_card(id_card2)
validate_id_card(id_card3)
密码匹配
密码设置:设置密码在8到12为,至少有一种特殊字符,包含字母大小写。
import re
def check_password(password):
# 密码长度检查
if len(password) < 8 or len(password) > 20:
print("密码长度应为8到20个字符")
return False
# 字符类型检查
if not re.search(r"[a-z]", password):
print("密码应包含至少一个小写字母")
return False
if not re.search(r"[A-Z]", password):
print("密码应包含至少一个大写字母")
return False
if not re.search(r"[!@#$%^&*(),.?":{}|<>]", password):
print("密码应包含至少一个特殊字符")
return False
# 密码符合要求
print("密码符合要求")
return True
# 测试密码
password1 = "Abcd1234!" #符合要求
password2 = "password" #只要有一个大写字母
password3 = "12345678" #至少有一个小写字母
password4 = "Abcdefg1" #至少有一个特殊字符
password5 = "Abc123" #密码长度在8到20个字符之间
check_password(password1)
check_password(password2)
check_password(password3)
check_password(password4)
check_password(password5)