python正規表示式

2021-08-10 00:10:54 字數 2440 閱讀 4477

最近做爬蟲,把python基礎的正規表示式又重新過了一遍。

常規匹配

import re

content = 'hello 123 4567 world_this is a regex demo'

print

(len(content)

)result = re.match("^hello\s\d\d\d\s\d\s\w.*demo$", content)

print

(result)

print

(result.group()

)print

(result.span()

)

輸出:

41

<_sre.sre_match object; span=(0, 41), match='hello 123

4567 world_this is a regex demo'>

hello 123

4567 world_this is a regex demo

(0, 41)

泛匹配
content = 'hello 123 4567 world_this is a regex demo'

result = re.match("^hello.*demo$", content)

匹配目標

獲取1234567

result = re.match("^hello\s(\d+)\s.*demo$", content)

print

(result.group(1)

)

輸出:1234567

貪婪匹配

result = re.match("^he.*(\d+).*demo$", content)

# 輸出 7

非貪婪匹配

?:匹配盡可能少的字元

result = re.match("^he.*?(\d+).*demo$", content)

# 輸出1234567

匹配模式
content = '''hello 1234567 world_this

is a regex demo

'''result = re.match("^he.*?(\d+).*?demo$", content, re.s)

轉義
content = 'price is $10.00'

result = re.match('price is \$10\.00', content)

re.search

找乙個結果

findall: 找所有

re.sub

字串替換

content = "dimples 54 aaa"

result = re.sub('\d+', '', content)

print

(result)

輸出:

dimples  aaa
替換原字串本身或包含字串
content = "dimples 12345 aaa"

result = re.sub('(\d+)', r'\1 6789', content)

print(result)

輸出:

dimples 12345

6789 aaa

結合使用

獲取所有歌名

html = '''

"2.***">借

"6">消愁

'''result1 = re.sub('|

', '', html)

print(result1)

result2 = re.findall('(.*?)

', result1, re.s)

for result in result2:

print(result.strip())

輸出:

消愁

re.compile

把乙個正則字串編譯成正規表示式物件,便於復用這個匹配模式

content = '''hello 1234567 world_this

is a regex demo

'''pattern = re.compile("^he.*?(\d+).*?demo$", re.s)

result = re.match(pattern, content)

print(result)

print(result.group(1))

# 輸出: 1234567

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...