攝影或3C

Python 正則表達式進階課:(?i…) 內聯修飾符 vs re.I 全域標記,打造無情的「激進截斷」割草機! `(?i)`、`flags=re.I`、`(?i:…)` 的差別

這篇教學文專門說明 Python `re` 模組裡的 ignore-case 寫法,並且用 `IloConnectProcessStep` 當主例子。

重點先講在前面:

1. `flags=re.I` 會讓整條 regex 都忽略大小寫。

2. `(?i)` 也是全域 ignore-case,但必須放在整條 pattern 最前面。

3. `(?i:…)` 是區域 ignore-case,只影響括號裡那一段。

4. `re.search(r’IloConnect(?i)…’)` 在 Python 3.11 會報錯,因為 bare `(?i)` 不能放在 pattern 中間。

## 1. 最基本的例子:把 `IloConnectProcessStep` 切成 `iloconnect`

import re

text = "IloConnectProcessStep"
pattern = r'(?i)(process|step).*$'

result = re.sub(pattern, '', text).strip().lower()

print("原始字串:", text)
print("pattern :", pattern)
print("結果    :", result)
儲蓄保險王

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