正则表达式本身是一个字符串,分别有两类:普通字符和特殊字符
一.常见语法
1.普通字符:无含义的字符,可直接匹配
2.特殊字符
例如: . 匹配除换行符外所有字符 用法 .字符
1.未使用正则表达式的例子
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])
2.基本格式
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)
3.星号的使用
# 字符.*代表持续到.后这一排所有的字符(包括.后面没有字符,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)
4.加号的使用
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)
5.花括号_选择匹配次数
# 固定次数匹配
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)