一、常用方法
(一)匹配
一般使用方法 第一个参数:正则模式 第二个参数:需要处理的字符串 第三个参数:附加处理方法
result从任意位置开始匹配,返回match,没有匹配到返回None
result = re.search(r"abc","1bcabcdbcd",re.I)
print(result,type(result),result.start(),result.end(),result.group())
findall以列表的形式返回所有匹配到的字符串
result = re.findall(r"abc","abcabcdAbcde")
print(result)
match从第一个字符开始匹配,如果第一个字符不匹配,就返回None
result = re.match(r"abc","1bcabcdAbcde")
print(result) # None
fullmatch匹配整个字符串,返回match或None
result = re.fullmatch(r"1\w+e","1bcabcdAbcde")
print(result)
finditer返回迭代器,每一个元素都是Match
result = re.finditer(r"abc","abcabcdAbcde")
for data in result:print(data.group())
(二)替换
一般使用方法
第一个参数:正则模式 第二个参数:替换成的内容 第三个参数:需要替换的字符串 第四个参数:替换次数 第五个参数:附加标识
sub把所有匹配成功的都进行替换,返回替换过后的字符串
result = re.sub(r"abc","星星","abcabcdAbcde")
print(result)
subn元组形式返回替换过的字符串和替换次数
result = re.subn(r"abc","星星","abcabcdAbcde")
print(result)
(三)切割
第一个参数是正则模式 第二个参数是需要切割的字符串 第三个参数是最大切割次数
split返回切割之后的内容
result = re.split(r"abc","abcabcdAbcde")
print(result)
二、特殊字符
# \w 匹配数字 字母 下划线
# result = re.findall(r"\w","abc123+_*?-")
# print(result)
# \W 匹配非数字 字母 下划线
# result = re.findall(r"\W","abc123+_*?-")
# print(result)# \d 匹配数字
# result = re.findall(r"\d","abc123+_*?-")
# print(result)
# \D 匹配非数字
# result = re.findall(r"\D","abc123+_*?-")
# print(result)# \S匹配 空白
# result = re.findall(r"\s","a bc123+_*?-\t\n")
# print(result)
# \S匹配 非空白
# result = re.findall(r"\S","a bc123+_*?-\t\n")
# print(result)# . 除了\n不匹配,其他都匹配
# result = re.findall(r".","ac +-*/ .46\t)\n")
# print(result)
# . 加上re.S后匹配所有
# result = re.findall(r".","ac +-*/ .46\t)\n",re.S)
# print(result)# ^ 开头
# result = re.findall(r"^a","ac +-*/\nab .46\t)")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r"^a","ac +-*/\nab .46\t)",re.M)
# print(result)# $ 结尾
# result = re.findall(r" $","ca +-*/\nba .46\t ")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r" $","ca +-*/ \nba .46\t ",re.M)
# print(result)# 贪婪:尽可能匹配多个
# * 代表有>=0个
# + 代表有>=1个
# ? 代表有1个或者0个
# result = re.findall(r"\d*","123456789")
# print(result)
# result = re.findall(r"\d+","123456789")
# print(result)
# result = re.findall(r"\d?","123456789")
# print(result)# 非贪婪:尽可能匹配少个数
# 在贪婪模式后追加一个?
# result = re.findall(r"\d*?","123456789")
# print(result)
# result = re.findall(r"\d+?","123456789")
# print(result)
# result = re.findall(r"\d??","123456789")
# print(result)# {n}匹配n次
result = re.findall(r"\d{2}","123456789")
print(result)
# {m,n}匹配m-n次
result = re.findall(r"\d{2,4}","123456789")
print(result)
# {m,n}? 非贪婪匹配
result = re.findall(r"\d{2,4}?","123456789")
print(result)
# []匹配其中一个
result = re.findall(r"[1-9a-z]","123456789abcdfaz")
print(result)
# |或者
result = re.findall(r"[1-9]|[a-z]","123456789abcdfaz")
print(result)
# ()分组
result = re.findall(r"(.*?)","123456789abcdfaz")
print(result)