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

加入好友
加入社群
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)
Python 正則表達式進階課:(?i...) 內聯修飾符 vs re.I 全域標記,打造無情的「激進截斷」割草機! `(?i)`、`flags=re.I`、`(?i:...)` 的差別 - 儲蓄保險王
Python 正則表達式進階課:(?i...) 內聯修飾符 vs re.I 全域標記,打造無情的「激進截斷」割草機! `(?i)`、`flags=re.I`、`(?i:...)` 的差別 - 儲蓄保險王
加入好友
加入社群
Python 正則表達式進階課:(?i...) 內聯修飾符 vs re.I 全域標記,打造無情的「激進截斷」割草機! `(?i)`、`flags=re.I`、`(?i:...)` 的差別 - 儲蓄保險王

儲蓄保險王

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

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *