1. 程式人生 > >Python 正則表示式,search(不要求從開頭匹配),findall(匹配所有),sub(替換),split(切割)

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']