23 - 正則進階

返回主頁

📄目錄

1 匹配分組

1.1 | 匹配左右任意一個表達式(常用)

python-logo

輸出結果:

1.2 (ab) 將括號中字符作為一個分組(常用)

python-logo

輸出結果:

1.3 \num 匹配分組num匹配到的字符串(經常在匹配標籤時被使用)

python-logo

輸出結果:

1.4 (?P<name>) 分組起別名

1.5 (?P=name) 引用別名為name分組匹配到的字符串

python-logo

輸出結果:

案例:匹配網址

python-logo

輸出結果:

python-logo

❗ 注意?:的功能

(?: )非捕獲組避免多餘 group

輸出結果:

⚠️ 注意res.group()res.groups()的差異

2 高級用法

2.1 search() 掃描整個字符串,並返回第一個成功匹配的對象

💡 匹配失敗就返回None

python-logo

輸出結果:

2.2 findall() 從頭到尾匹配,找到所有匹配成功的數據,返回一個列表

python-logo

輸出結果:

2.3 sub() sub(pattern, repl, string, count)

  1. pattern:正則表達式(代表需要被替換的,也就是字符串里面的舊內容)

  2. repl:新內容

  3. string:字符串

  4. count:指定替換的次數

python-logo

輸出結果:

2.4 split() split(pattern, string, maxsplit)

  1. pattern:正則表達式

  2. string:字符串

  3. maxsplit:指定最大分割次數

python-logo

輸出結果:

2.5 總結

  1. match():從頭開始匹配,匹配成功返回match對象,通過gruop()進行提取,匹配失敗就返回None,只匹配一次

  2. search():從頭到尾匹配,匹配成功返回第一個成功匹配的對象,通過gruop進行提取,匹配失敗就返回None,只匹配一次

  3. findall():從頭到尾匹配,匹配成功返回一個列表(list),匹配所有匹配成功的數據;不需要通過group()進行提取,沒有這個方法

3 貪婪與非貪婪

3.1 貪婪匹配(默認):在滿足匹配時,匹配盡可能長的字符串

python-logo

輸出結果:

3.2 非貪婪匹配:在滿足匹配時,匹配盡可能短的字符串,使用?來表示非貪婪匹配

python-logo

輸出結果:

4 原生字符串 r取消轉義

❗ 在Python中,在字符串前面加上r以表示原生字符串

python-logo

輸出結果:

💡 正則表達式中,匹配字符串的字符\需要\\\\(4個),加入原生字符串,\\代表\

python-logo

輸出結果:

導航連結:

目的地超連結
首頁返回主頁
Python學習Python學習
上一篇22 - 正則基礎
下一篇24 - 內置模塊