當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。
以下是正則表達式中常用符號的重點整理:
[abc]
: 匹配 a
、b
或 c
中的任何一個字符。[^abc]
: 匹配除了 a
、b
、c
之外的任何字符(否定字符集)。[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]
。.
: 匹配除換行符外的任何單個字符。*
: 匹配前面的元素0次或多次(零個或多個)。+
: 匹配前面的元素1次或多次(至少一個)。?
: 匹配前面的元素0次或1次(可選)。{n}
: 精確匹配前面的元素 n
次。{n,}
: 匹配前面的元素至少 n
次。{n,m}
: 匹配前面的元素至少 n
次,最多 m
次。^
: 匹配字符串的開頭。$
: 匹配字符串的結尾。\b
: 匹配單詞邊界(單詞的開始或結束)。\B
: 匹配非單詞邊界。(...)
: 分組,將正則表達式的一部分包起來,並將其視為一個單位。分組的部分可以被捕獲和引用。(?:...)
: 非捕獲組,分組但不存儲匹配結果。\1
, \2
, ...: 捕獲組的反向引用,匹配先前分組中捕獲的內容。\
: 用來轉義正則表達式中的特殊字符(如 .
、*
、+
、?
、^
、$
等),使它們作為普通字符處理。|
: 表示邏輯 "或",例如 a|b
匹配 a
或 b
。(?i)
: 使匹配忽略大小寫。(?m)
: 多行模式,使 ^
和 $
匹配每一行的開頭和結尾。(?s)
: 使 .
匹配所有字符,包括換行符。(?=...)
: 正向先行斷言,要求在此位置後面的字符串與括號內的模式匹配,但不消耗字符。(?!...)
: 負向先行斷言,要求在此位置後面的字符串不匹配括號內的模式。(?<=...)
: 正向後行斷言,要求在此位置前面的字符串與括號內的模式匹配,但不消耗字符。(?<!...)
: 負向後行斷言,要求在此位置前面的字符串不匹配括號內的模式。.*
: 貪婪匹配,匹配儘可能多的字符。.*?
: 非貪婪匹配,匹配儘可能少的字符。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
String Methods
Pandas
List Comprehensions
String Templates
但在處理複雜模式匹配時,re正則表達式還是很好用的工具可以客製