2024-08-16|閱讀時間 ‧ 約 26 分鐘

[Python]Re正則表達式中常用符號的重點整理

當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。


以下是正則表達式中常用符號的重點整理:

字元類別 (Character Classes)

  • [abc]: 匹配 abc 中的任何一個字符。
  • [^abc]: 匹配除了 abc 之外的任何字符(否定字符集)。
  • [a-z]: 匹配任意小寫字母(a到z)。
  • [A-Z]: 匹配任意大寫字母(A到Z)。
  • [0-9]: 匹配任意數字(0到9)。
  • [a-zA-Z0-9_]: 匹配任意字母、數字或下劃線(單詞字符)。
  • \d: 匹配任意數字,等同於 [0-9]
  • \D: 匹配任意非數字字符,等同於 [^0-9]
  • \w: 匹配任意單詞字符(字母、數字或下劃線),等同於 [a-zA-Z0-9_]
  • \W: 匹配任意非單詞字符,等同於 [^a-zA-Z0-9_]
  • \s: 匹配任意空白字符(空格、Tab、換行等),等同於 [ \t\n\r\f\v]
  • \S: 匹配任意非空白字符,等同於 [^ \t\n\r\f\v]
  • .: 匹配除換行符外的任何單個字符。

量詞 (Quantifiers)

  • *: 匹配前面的元素0次或多次(零個或多個)。
  • +: 匹配前面的元素1次或多次(至少一個)。
  • ?: 匹配前面的元素0次或1次(可選)。
  • {n}: 精確匹配前面的元素 n 次。
  • {n,}: 匹配前面的元素至少 n 次。
  • {n,m}: 匹配前面的元素至少 n 次,最多 m 次。

位置匹配符號 (Anchors)

  • ^: 匹配字符串的開頭。
  • $: 匹配字符串的結尾。
  • \b: 匹配單詞邊界(單詞的開始或結束)。
  • \B: 匹配非單詞邊界。

分組和引用 (Grouping and References)

  • (...): 分組,將正則表達式的一部分包起來,並將其視為一個單位。分組的部分可以被捕獲和引用。
  • (?:...): 非捕獲組,分組但不存儲匹配結果。
  • \1, \2, ...: 捕獲組的反向引用,匹配先前分組中捕獲的內容。

特殊字符 (Special Characters) 的轉義

  • \: 用來轉義正則表達式中的特殊字符(如 .*+?^$ 等),使它們作為普通字符處理。

選擇符 (Alternation)

  • |: 表示邏輯 "或",例如 a|b 匹配 ab

特殊語法 (Special Constructs)

  • (?i): 使匹配忽略大小寫。
  • (?m): 多行模式,使 ^$ 匹配每一行的開頭和結尾。
  • (?s): 使 . 匹配所有字符,包括換行符。
  • (?=...): 正向先行斷言,要求在此位置後面的字符串與括號內的模式匹配,但不消耗字符。
  • (?!...): 負向先行斷言,要求在此位置後面的字符串不匹配括號內的模式。
  • (?<=...): 正向後行斷言,要求在此位置前面的字符串與括號內的模式匹配,但不消耗字符。
  • (?<!...): 負向後行斷言,要求在此位置前面的字符串不匹配括號內的模式。

貪婪與非貪婪匹配 (Greedy vs Non-Greedy Matching)

  • .*: 貪婪匹配,匹配儘可能多的字符。
  • .*?: 非貪婪匹配,匹配儘可能少的字符。


範例

數字匹配(包括小數)

number_pattern = r'[-+]?\d*\.?\d+'
  • [-+]?: 匹配可選的正號 (+) 或負號 (-)。
  • \d*: 匹配零個或多個數字,代表小數點前的整數部分。
  • \.?: 匹配可選的小數點 (.)。
  • \d+: 匹配一個或多個數字,代表小數部分或整數部分。
number_pattern = r'[-+]?\d*\.?\d+'
number = "-123.45"
number_match = re.match(number_pattern, number)

if number_match:
    print("數字匹配結果:", number_match.group()) #輸出 數字匹配結果: -123.45

除了正則表達式(regex),還有一些其他方法可以用來處理字符串匹配、查找和替換的任務。

String Methods

Pandas

List Comprehensions

String Templates

但在處理複雜模式匹配時,re正則表達式還是很好用的工具可以客製


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.