正则表达式本身是一个字符串,分别有两类:普通字符和特殊字符
一.常见语法
1.普通字符:无含义的字符,可直接匹配
2.特殊字符
例如: . 匹配除换行符外所有字符 用法 .字符
content = ''' 啊啊啊啊12.5万/月啊啊啊啊 啊啊啊啊666万/每月啊啊啊啊 啊啊啊啊55.9万/月啊啊啊啊 ''' lines = content.splitlines() for line in lines: pos2 = line.find('万/月') if pos2 < 0: pos2 = line.find('万/每月') if pos2 < 0: continue # if语句内部缩进到下一个语句块再写一个if语句可嵌套 idx = pos2 - 1 while line[idx].isdigit() or line[idx] == '.': idx -= 1 pos1 = idx + 1 print(line[pos1:pos2])
content = ''' 啊啊啊啊12.5万/月啊啊啊啊 啊啊啊啊666万/每月啊啊啊啊 啊啊啊啊55.9万/月啊啊啊啊 ''' # 导入文本 import re # 导入正则表达式模块(库) p = re.compile(r'.万') # r表示防止正则表达式里的特殊字符转意 print(type(p)) for one in p.findall(content): # findall()找到所有符合条件的文本 print(type(one)) print(one)
# 字符.*代表持续到.后这一排所有的字符(包括.后面没有字符,0次)(直到行尾) # 几个字符*代表将这几个字符和最后一个字符重复选中(匹配)多次 coutent = """ 橘子,是橙色的 树叶,是绿色色色色色的 柚子,是黄色的 苹果,是绿色的 梨子, """ import re p = re.compile(r',.*') for one in p.findall(coutent): print(one) p = re.compile(r'绿色*') for one in p.findall(coutent): print(one)
import re p = re.compile(r',.+') for one in p.findall(coutent): print(one) # 结果和,.#不一样,是不包含没有字符的梨子的 # p = re.compile(r',.*') # for one1 in p.findall(coutent): # print(one1)
# 固定次数匹配 import re # coutext = """ # 红彤彤,绿油油,黑乎乎,绿油油油油油油油油油油油油油油油 # """ # p = re.compile(r'绿油{3,4}') # 最小匹配次数,最大匹配次数 # for one in p.findall(coutext): # print(one) coutext = """ 张小明, 13566665555, 20岁 """ p = re.compile('\d{11}') # 十进制数\d for one in p.findall(coutext): print(one)