Python正則表達式基礎:強大的文本處理工具

正則表達式(Regular Expression),簡稱Regex或RegExp,是一種用來匹配字符串的強大工具。Python內置的re模塊可以讓我們輕鬆使用正則表達式對字符串進行檢索、替換、分割等操作,這為文本處理提供了很大的便利。

一、基礎語法

正則表達式是由普通字符和一些特殊字符組成的,可以用來描述字符的特徵、數量、出現次序等。下面是一些基礎的正則表達式。

.  匹配任意字符,不包括換行符
\w 匹配字母、數字或下劃線
\s 匹配任意空白字符,包括空格、製表符、換頁符等
\d 匹配數字
^  匹配字符串的開始
$  匹配字符串的結束
[] 匹配中括號中的任意一個字符
|  匹配 | 左右兩側的任意一個正則表達式
() 分組,可以對一部分正則表達式進行操作
*  匹配前面的表達式0次或多次
+  匹配前面的表達式1次或多次
?  匹配前面的表達式0次或1次
{n} 匹配前面的表達式n次
{n,} 匹配前面的表達式至少n次
{n,m} 匹配前面的表達式n次到m次

例如,我們使用正則表達式 \d{3}-\d{5} 來匹配郵政編碼,其中 \d 表示匹配數字,{3}表示匹配3次,-表示匹配橫杆。這裡的正則表達式的意思是先匹配3個數字,再匹配一個橫杆,然後再匹配5個數字。

二、常用操作

re模塊提供了很多常用的操作函數,這裡介紹3個最常用的操作:search、match和sub。

1. search

search函數用來檢索字符串中是否有符合正則表達式的內容,如果查找成功,返回一個Match對象,否則返回None。

import re

# 查找郵箱地址
text = "我的郵箱是lichang@mail.com。"
pattern = r'\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}'
result = re.search(pattern, text)
if result:
    print(result.group())  # 輸出lichang@mail.com
else:
    print("未找到郵箱地址。")

2. match

match函數用來判斷字符串開頭是否符合正則表達式,如果符合,返回一個Match對象,否則返回None。

import re

# 檢查手機號碼
text = "我的手機號碼是18012345678。"
pattern = r'^1\d{10}$'
result = re.match(pattern, text)
if result:
    print(result.group())  # 輸出18012345678
else:
    print("未找到手機號碼。")

3. sub

sub函數用來替換字符串中符合正則表達式的內容。

import re

# 替換字符串
text = "I love Python!"
pattern = r'\bPython\b'
result = re.sub(pattern, "Java", text)
print(result)   # 輸出I love Java!

三、高級應用

正則表達式還有很多高級應用,這裡介紹3個最常見的:分組、零寬斷言和貪婪與非貪婪匹配。

1. 分組

正則表達式使用 () 來進行分組,可以對分組內容進行重複或者替換。

import re

# 替換文字
text = "2019年10月10日"
pattern = r'(\d{4})年(\d{2})月(\d{2})日'
result = re.sub(pattern, r'\1-\2-\3', text)
print(result)   # 輸出2019-10-10

2. 零寬斷言

零寬斷言指的是匹配內容的前面或者後面應該滿足一定的條件,但是這些條件不包括在匹配結果中。

import re

# 查找http鏈接
text = "我的個人網站是http://www.lichang.net,歡迎來訪問。"
pattern = r'(?<=http://)[a-zA-Z0-9]+\.[a-zA-Z]+'
result = re.search(pattern, text)
if result:
    print(result.group())  # 輸出www.lichang.net
else:
    print("未找到鏈接。")

3. 貪婪與非貪婪匹配

正則表達式默認是貪婪模式,即儘可能多地匹配內容。非貪婪模式使用 ? 來標識,表示儘可能少地匹配內容。

import re

# 正則表達式在匹配字符串時儘可能多地匹配內容
text = "

Title

" pattern = r'' result = re.match(pattern, text) print(result.group()) # 輸出

Title

# 正則表達式在匹配字符串時儘可能少地匹配內容 text = "

Title

" pattern = r'' result = re.match(pattern, text) print(result.group()) # 輸出

四、總結

正則表達式是一種強大的文本處理工具,能夠為Python程序員提供很大的便利。Python內置的re模塊可以讓我們輕鬆使用正則表達式對字符串進行檢索、替換、分割等操作。雖然正則表達式也有一些坑,但是只要我們理解了基本語法和常用操作,就可以快速地解決很多文本處理問題。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246405.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:15
下一篇 2024-12-12 13:15

相關推薦

  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • Python零基礎PDF下載

    本文將為大家介紹如何使用Python下載PDF文件,適合初學者上手實踐。 一、安裝必要的庫 在Python中,我們需要使用urllib和requests庫來獲取PDF文件的鏈接,並…

    編程 2025-04-29
  • 樹莓派DIY無人機一:製作基礎

    本文將介紹如何使用樹莓派製作一個可飛行的小型無人機。本文將介紹樹莓派的選型、比例積木的使用、無線電通信以及如何控制飛行器的基本運動。 一、樹莓派的選型 在DIY無人機中,樹莓派是必…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • Polyphone音頻編輯器基礎入門教程

    Polyphone是一款免費的音頻編輯器,可用於編輯.sf2和.sfz格式的音色庫。本文將詳細介紹Polyphone的基礎操作及使用方法。 一、安裝和簡介 首先,我們需要下載並安裝…

    編程 2025-04-29
  • Python最強大的製圖庫——Matplotlib

    Matplotlib是Python中最強大的數據可視化工具之一,它提供了海量的製圖、繪圖、繪製動畫的功能,通過它可以輕鬆地展示數據的分佈、比較和趨勢。下面將從多個方面對Matplo…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python range: 強大的迭代器函數

    Python range函數是Python中最常用的內置函數之一。它被廣泛用於for循環的迭代,列表推導式,和其他需要生成一系列數字的應用程序中。在本文中,我們將會詳細介紹Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論