还是使用《正则表达式直接取值法》中的例子,这里介绍一下用编译取值法编辑正则表达式取得我们想要的元素。
text = " 姓名:海 风,性别:男,年龄:52,账号:12345,密码:6789,作品:<<'双随机'管理系统>>电\
\
\
话:133****5117(常用)"
采用编译取值法匹配全部字符,包括空格,但不包括回车符号
alc = re.compile('.');al = alc.findall(text);print(al)
按照要求提取文字中的姓名、性别、年龄、账号、密码、作品和电话号码
# 提取姓名(显示结果:海风)
namec =re.compile("姓名:.*性别");name = [nn[3:-3] for nn in namec.findall(text)][0].replace(' ','');print(name)
# 提取性别(显示结果:男)
sxc = re.compile("性别:.*年龄");sx =[sxn[3:-3] for sxn in sxc.findall(text)][0];print(sx)
# 提取年龄(显示结果:51)
agec = re.compile("年龄:.*账号");age =[en[3:-3] for en in agec.findall(text)][0];print(age)
# 提取账号(显示结果:12345)
actc = re.compile("账号:.*密码");act =[actn[3:-3] for actn in actc.findall(text)][0];print(act)
# 提取密码(显示结果:密码:6789)
pwc = re.compile(("密码:\d+"));pw =[pn[3:] for pn in pwc.findall(text)][0];print(pw)
# 提取作品名称(显示结果:<<'双随机'管理系统>>)
wsnc = re.compile("作品:.+>");wsn =[wn[3:] for wn in wsnc.findall(text)][0];print(wsn)
# 提取电话号码(显示结果:133****5117)
telc = re.compile("电话:.*\d");tel =[tn[3:] for tn in telc.findall(text)][0];print(tel)
显示的最终结果