python正則表達式之re模塊方法

以下內容爲從慕課網聽來的,記下筆記,以便以後查用。

1.search(pattern, string, flags=0) 在一個字符串中查找匹配(查找第一次出現的位置)

2.findall(pattern, string, flags=0) 找到匹配,返回所有匹配部分的列表

3. sub(pattern, repl, string, count=0, flags=0) 將字符串中匹配正則表達式的部分替換爲其他值

4.split(pattern, string, maxsplit=0, flags=0) 根據匹配分割字符串,返回分割字符串組成的列表

1. 查找第一個出現的位置,類似於string 的 find方法,不過後者是查找固定子串

str1 = 'imooc videonum = 1000'

str1.find('1000') # 固定子串

info = re.search(r'\d+', str1) # 正則方法,可以查找任意數字

info.group() # '1000'

2.findall 方法講解

str2 = 'C++=100, java=90, python=80'

info = re.search(r'\d+', str2)

info.group() # 100 ,只返回一個匹配值,而我們想查找所有時長,就要用到findall()了

info = re.findall(r'\d+', str2)

info.group() # ['100', '90', '80'],求和很容易了

3.pattern爲正則表達式,repl可爲字符串,可爲函數返回的字符串,string被替換字符串,count是對替換的限制,flags爲re模塊的標誌

eg:

str3 = 'imooc videonum = 1000'

info = re.sub(r'\d+', '1001', str3)

info: 'imooc videonum = 1000'

思考:如果最後的數字變了,最後數字加1如何處理?

方法:repl定義爲一個函數,匹配到的對象傳入repl定義的函數中

def add1(match):

    val = match.group()

    num = int(val) + 1

    return str(num)

info = re.sub(r'\d+', add1, str3)

info: 'imooc videonum = 1001'

解釋:先將正則表達式去匹配string,然後把匹配到的match 對象作爲參數傳入add1

4. split比字符串分割更靈活

str4 = 'imooc:C C++ Java Python' # 將4個種類分割開

re.split(r':| ', str4) # 比字符串方便

str4 = 'imooc:C C++ Java, Python'

re.split(r':| |,', str4)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章