Python 正则表达式,search(不要求从开头匹配),findall(匹配所有),sub(替换),split(切割)

match()从开头匹配。

search()不要求从开头匹配,只会匹配第一个。

findall()匹配所有,返回列表。

sub()替换匹配到的所有子串为指定内容,并返回整个字符串。

split()切割字符串,返回列表。

demo.py(search,不要求从开头匹配,只会匹配第一个):

# coding=utf-8
import re

ret = re.search(r"\d+", "阅读次数为 9999")  # match默认从开头匹配,search不要求从开头匹配
# ret = re.search(r"^\d+", "阅读次数为 9999")  # 如果正则表达式中加入^表示从开头匹配,那么search与match相同。

if ret:
	print(ret.group())  # 9999  自会匹配第一个 (findall匹配所有,返回列表)
else:
	print("未找到")

demo.py(findall,匹配所有,返回列表):

# coding=utf-8
import re

ret = re.findall(r"\d+", "阅读次数为 9999,点赞数 666")  # search只匹配第一个,findall匹配所有(返回列表)

if ret:
	print(ret)  # ['9999', '666']  findall匹配所有,返回列表
else:
	print("未找到")

demo.py(sub替换匹配到的所有):

# coding=utf-8
import re
# sub替换 替换成固定字符串
ret = re.sub(r"\d+", "替换成的内容","阅读次数为 9999,点赞数 666")  # 替换匹配到的所有,并返回整个字符串。

print(ret)  # 阅读次数为 替换成的内容,点赞数 替换成的内容


# #######################################################
# sub替换 替换成函数的返回值
def add(temp):
    strNum = temp.group()
    num = int(strNum) + 1
    return str(num)

ret = re.sub(r"\d+", add, "python = 997")  # 将匹配到的内容(997)传给add函数,并将997替换成add函数的返回值。
print(ret)  # python = 998

ret = re.sub(r"\d+", add, "python = 99")
print(ret)  # python = 100

demo.py(split切割字符串,返回列表):

#coding=utf-8
import re

ret = re.split(r":| ","info:xiaoZhang 33 shandong")  # 切割,根据冒号:或者空格切割。 返回列表
print(ret)  # ['info', 'xiaoZhang', '33', 'shandong']

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/84574397