python re模組與正規表示式

2021-09-07 09:55:47 字數 1801 閱讀 5892

目標:

* 知道re模組的常用操作

* 會使用正則匹配單個、多個字元

基本語法

【重點】re模組常用操作

result = re.match(正規表示式,要匹配的字串)

# 如果上一步匹配到資料的話,可以使用group方法來提取資料

result.group() # group(下標索引) 0,1,2,3

import re

ret = re.search(r"\d+", "閱讀次數為 9999")

ret.group()

# 執行結果:

'9999'

import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")

print(ret)

# 執行結果:

['9999', '7890', '12345']

import re

ret = re.sub(r"\d+", '998', "python = 997")

print(ret)

# 執行結果

python = 998

# 支援函式的呼叫

def add(temp):

strnum = temp.group()

num = int(strnum) + 1

return str(num)

ret = re.sub(r"\d+", add, "python = 997")

print(ret)

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

print(ret)

# 執行結果

python = 998

python = 100

r的作用:python中字串前面加上 r 表示原生字串

匹配單個字元

匹配多個字元

匹配分組

匹配開頭結尾

【面】python裡match與search的區別?

match()函式只檢測 re 是不是在 string 的開始位置匹配, 

search()會掃瞄整個 string 查詢匹配;

也就是說 match()只有在 0 位置匹配成功的話才有返回,

如果不是開始位置匹配成功的話,match()就返回 none。

【面】用 python 匹配 html tag 的時候,<.> 和 <.> 有什麼區別?

<.>是貪婪匹配,會從第乙個「」中間所有的字元都會匹配到,中間可能會包含 「<>」。

<.>是非貪婪匹配,從第乙個「」結束匹配,這中間的字串都會匹配到,但是 不會有「<>」。

python re模組與正則

正規表示式中的轉義符在python的字串中也剛好有轉移的作用,但是正規表示式中的轉義符和字串中的轉義符並沒關係,且還容易有衝突。為了避免這種衝突,我們所有的正則都以在工具中的測試結果為結果,然後只需要在正則和待匹配的字串外面都加r即可 print n n print n n print r n n ...

Python re 正則模組

有些字元比較特殊,它們和自身並不匹配,而是會表明應和一些特殊的東西匹配,或者它們會影響到 re 其它部分的重複次數,它們叫元字元。其中 m 和 n 是十進位制整數。該限定符的意思是至少有 m 個重複,至多到 n 個重複。舉個例子,a b 將匹配 a b a b 和 a b 它不能匹配 ab 因為沒有...

Python re正則模組

對於比較複雜的字串處理任務,需要依靠正規表示式。首先需要匯入 re 模組 import re常用的元字元 符號含義 匹配除 n 和 r 之外的任何單個字元。匹配字串開始位置 匹配字串結束位置 前面的元素重複0次,1次或多次 前面的元素重複0次或1次 前面的元素重複1次或多次 前面的元素出現了n次 前...