攝影或3C

正則表示法(Regular Expression): pattern = re.compile(r’\d+’) #re.Pattern ; pattern.match() ; pattern.search() ; pattern.findall() ; pattern.finditer() ; pattern.sub() 如何使用?

re.compile() 是 Python 的 re 模組(正則表達式模組)中的一個函數,用於編譯正則表達式模式,生成一個正則表達式對象。這個對象可以用來進行模式匹配,並且編譯過的正則表達式可以重複使用,提高匹配效率。

使用 re.compile() 的優勢

  1. 提高效率:編譯過的正則表達式對象可以重複使用,避免每次匹配時都重新編譯正則表達式,從而提高性能。
  2. 可讀性:將正則表達式模式與使用它的代碼分開,可以提高代碼的可讀性和可維護性。

正則表達式對象的方法

編譯過的正則表達式對象提供了多種方法來進行模式匹配和查找,包括:

  • match():從字符串的開始位置匹配。
  • search():在字符串中查找第一個匹配的子串。
  • findall():查找字符串中所有匹配的子串,並返回它們的列表。
  • finditer():查找字符串中所有匹配的子串,並返回它們的迭代器。
  • sub():替換字符串中所有匹配的子串。
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 13 06:58:30 2024

@author: SavingKing
"""

import re

# 編譯正則表達式
pattern = re.compile(r'\d+')
#re.Pattern

text = ' 123abc456def789ghi'
#前面故意多一個空白
#.match() 不會匹配 

# 使用 match() 方法
match = pattern.match(text)
if match:
    print('Match:', match.group())  
# 這裡不會匹配因為字符串不是以數字開頭
else:
    print(".match()無法匹配")

# 使用 search() 方法
search = pattern.search(text)
if search:
    print('Search:', search.group())  # 輸出: 123

# 使用 findall() 方法
findall = pattern.findall(text)
print('Findall:', findall)  # 輸出: ['123', '456', '789']

# 使用 finditer() 方法
for match in pattern.finditer(text):
    #type(pattern.finditer(text))
    #callable_iterator
    print('Finditer:', match.group())  # 分別輸出: 123, 456, 789

# 使用 sub() 方法
sub = pattern.sub('#', text)
print('Sub:', sub)  # 輸出: #abc#def#ghi

輸出結果:

推薦hahow線上學習python: https://igrape.net/30afN

使用re.compile()

直接使用字符串:

小結

  • 使用 re.compile():將正則表達式模式編譯成對象後,可以重複使用這個對象進行多次匹配操作,代碼更高效且易讀。
  • 直接使用字符串:僅定義了一個正則表達式模式的字符串,每次使用時都需要通過 re 模組的函數來進行匹配操作,效率較低。

總之,當需要頻繁使用同一個正則表達式模式時,使用 re.compile() 會更合適。而如果只是偶爾使用一次,可以直接使用字符串模式。

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡