id_str = input("输入一个身份证号:") import re obj = re.compile(r"^([1-9]d{16}[0-9x]|[1-9]d{14})$") # 将正则表达式编译成为一个 正则表达式对象 ret = obj.match(id_str) if ret: print("输入的身份证合法", ret.group()) else: print("输入不合法")
import re ret = 'eva3egon4yuan4'.replace('4', 'H') print(ret) # eva3egonHyuanH ret = re.sub(r'd', 'H', 'eva3egon4yuan4') # 将数字替换成'H',全部替换 print(ret) # evaHegonHyuanH ret = re.sub(r'd', 'H', 'eva3egon4yuan4', 1) # 将数字替换成'H',参数1 表示只替换1个 print(ret) # evaHegon4yuan4 ret = re.subn(r'd', 'H', 'eva3egon4yuan4') # 将数字替换成'H',返回元组(替换的结果,替换了多少次) print(ret) #('evaHegonHyuanH', 3)
ret = re.findall(r"[d|.]+", "2020-10-10 11:12:40.237") print(ret) # ['2020', '10', '10', '11', '12', '40.237'] ret = re.sub(r'.d+', '', "40.23723") print(ret) # 40
import re s = " ABC hello Bye " obj = re.compile(r's+') # 任意多个空格 s1 = re.sub(obj, '', s) # 将符合规则的字符串 替换为空字符'' print(s1)
import re ret = re.split(r"d+", "eva3egon4yuan") print(ret) # 结果 : ['eva', 'egon', 'yuan'] ret = re.split(r"(d+)", "eva3egon4yuan") print(ret) # 结果 : ['eva', '3', 'egon', '4', 'yuan'] ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',再对''和'bcd'分别按'b'分割 print(ret) # ['', '', 'cd']
import re # ()是分组 ?:是取消了分组的优先权限
ret = re.findall(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
print(ret) # ['www.baidu.com', 'www.oldboy.com']
ret1 = re.search(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
print(ret1)
if ret1:
print(ret1.group()) # www.baidu.com
ret2 = re.match(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
print(ret2) # None
if ret2:
print(ret2.group())
# findall会优先把匹配结果组()里的内容返回
ret = re.findall(r'www.(baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
print(ret) # ['baidu', 'oldboy']
import re
ret = re.finditer(r'd', 'ds3sy4784a') # finditer返回一个存放匹配结果的迭代器
print(ret) # callable_iterator object 可被调用执行的迭代器对象
# 迭代器的三种取值方法 方法1 next() 取到末尾再取则报错
print(next(ret).group()) #查看第一个结果
print(next(ret).group()) #查看第二个结果
print(next(ret).group()) #查看第三个结果
# 迭代器的三种取值方法 方法2 for循环取值
print([i.group() for i in ret]) # 已经被取值取走三个结果 只能查看剩余结果
3
4
7
['8', '4']
import re
ret = re.finditer(r'd', 'ds3sy4784a') # finditer返回一个存放匹配结果的迭代器
print(ret) # callable_iterator object 可被调用执行的迭代器对象
# 迭代器的三种取值方法 方法3 强制类型转换 list()
for el in list(ret):
print(el.group())