Python中如何使用正則表達式?re模塊完整用法解析

python正則表達式通過re模塊實現,主要功能包括匹配、提取、替換和拆分字符串。1. 匹配基本模式用re.match(從開頭匹配)和re.search(全局搜索第一個匹配項);2. 提取數據可通過括號分組捕獲內容,使用group()獲取對應分組;3. 替換用re.sub,拆分用re.split;4. 注意事項包括轉義特殊字符、貪婪與非貪婪匹配、編譯正則提升效率及忽略大小寫等技巧。掌握這些核心函數和語法能應對大多數文本處理需求。

Python中如何使用正則表達式?re模塊完整用法解析

python中,正則表達式主要通過re模塊來實現。它能幫助我們從字符串中提取、匹配、替換特定格式的內容。雖然初看有點復雜,但掌握幾個常用方法后,你會發現它非常實用。

Python中如何使用正則表達式?re模塊完整用法解析


匹配基本模式:用re.match和re.search

這兩個函數都可以用來查找匹配項,但有區別

Python中如何使用正則表達式?re模塊完整用法解析

  • re.match:只從字符串開頭開始匹配,適合驗證輸入格式。
  • re.search:在整個字符串中搜索第一個匹配項,更靈活。

舉個例子:

立即學習Python免費學習筆記(深入)”;

import re  text = "abc123xyz"  # 只匹配以abc開頭的 match_result = re.match(r"abc", text)  # 匹配成功  # 搜索是否有數字 search_result = re.search(r"d+", text)  # 找到123

如果你不確定目標的位置,優先使用search()。

Python中如何使用正則表達式?re模塊完整用法解析


提取數據:分組與捕獲

正則的一大用途是提取信息,比如從日志里提取IP地址、時間等。這時候需要用到括號()進行分組

例如從一段日志中提取日期和IP:

log_line = "2024-03-15 192.168.1.100 User login" pattern = r"(d{4}-d{2}-d{2}) (d+.d+.d+.d+)"  match = re.search(pattern, log_line) if match:     print("日期:", match.group(1))  # 輸出:日期: 2024-03-15     print("IP地址:", match.group(2))  # 輸出:IP地址: 192.168.1.100
  • group(0) 是整個匹配結果;
  • group(1)、group(2) 是括號里的內容;
  • 分組可以嵌套,也可以命名(如?P)。

替換與拆分:用re.sub和re.split

  • re.sub(pattern, repl, String):把匹配的部分替換成別的內容。
  • re.split(pattern, string):根據正則規則拆分字符串。

比如清理多余空格:

text = "hello   world,  this is Python." cleaned = re.sub(r"s+", " ", text)  # 把多個空格換成一個 # 結果:"hello world, this is Python."

再比如按標點符號分割句子:

sentences = re.split(r"[,.!?]", text) # 注意結果會包含空字符串,可能需要過濾掉

這些操作在處理用戶輸入、清洗數據時特別有用。


常見注意事項和技巧

  • 轉義字符:像.、*、+這些符號在正則中有特殊含義,想匹配字面值要用轉義。
  • 貪婪 vs 非貪婪
    • 默認是“貪婪”匹配(盡可能多),加上?變成“非貪婪”,如.*?
  • 編譯正則表達式:如果同一個模式要多次使用,建議用re.compile()提升效率。
  • 忽略大小寫:加參數flags=re.IGNORECASE
  • 多行匹配:某些時候需要用flags=re.MULTILINE讓^和$匹配每行開頭結尾

基本上就這些了。正則表達式剛開始可能會覺得繞,但只要記住幾個核心函數和常見語法,就能應對大多數文本處理場景。不復雜但容易忽略細節,慢慢練手就好了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享