re模块

junlan
5
2024-11-25

re模块

正则表达式测试网站:https://tool.chinaz.com/regex

字符组:

匹配所有数字:[0-9]
匹配所有小写字母:[a-z]
匹配所有大写字母:[A-Z]
匹配所有字母数字:[0-9a-ZA-Z]
只能从ascii码小的值到大的值,可以一次取多个区间:[0-9a-f]

元字符

\d [0-9]
\w [0-9a-ZA-Z_] 中文?
\s \t \n 匹配所有的空白符|制表符|换行符
\D \IW \S 匹配所有非数字 \ 匹配所有非数字字母下划线 \ 匹配所有非空白
. 匹配除了换行符之外的任意一个字符
$ 匹配一个字符串的开始,$匹配一个字符串的结束
[] [
] 字符组非字符组
| () 或用来规范符号的作用域

量词

{n} 匹配n次

{n,} 匹配至少n次

{n,m} 匹配n-m次

? 0 或 1 次

+(1-无穷大)

*(0-无穷大 )

findall(正则表达式,要匹配的字符串)

# 功能:取所有
# 返回值:[列表],所有匹配到的项都会被返回到列表中
import re
username = 'junlan1234'
regex = r'\d'  # 正则表达式,匹配数字
ret = re.findall(regex, username)
print(ret)

search(正则表达式,要匹配的字符串)

# 功能: 从头开始往后找任何地方有符合条件的直接将其返回,不再往回找
# 返回值:re 自定义类型
import re
username = 'junlan1234'
regex = r'\d'  # 正则表达式,匹配数字
ret = re.search(regex, username)
print(ret)

match(正则表达式,要匹配的字符串)匹配用户输入的内容是否合法时都是用match

功能:从头开始匹配,如果开始部分匹配到了就是匹配成功,如果开始部分没有匹配到,就匹配失败
返回值:re自定义类型
import re

phone_num = input('请输入合法的手机号:')
regex = r'1[2-9]\d{9}$'
ret = re.match(regex,phone_num)
if ret:
    print(ret)
    print('是合法的手机号码%s'%phone_num)
else:
    print('不是合法的手机号码')