一、核心優勢:
用一小段規則搞定大量復雜的字符串匹配,查找和替換,并且可移植可復用。
使用正則表達式的好處:1. 強大且靈活:可以一次性匹配非常復雜的規則,比如驗證郵箱、提取特定的格式日志、解析URL;
2. 跨語言:
????????支持的語言:Python、JavaScript、C#、Java、 PHP、Lua;
? ? ? ? 支持的工具:grep、sed、Notepad++、VSCode;
3. 減少代碼量:
? ? ? ? 進行復雜的字符串處理時,可能需要幾十行代碼,正則表達式幾行就能搞定;
4. 靈活替換與批量處理:
? ? ? ? 能批量替換符合模式的文本,無需逐個字符串對比;結合分組引用,可以保留和重用匹配部分;
5. 可讀性與可維護性:
? ? ? ? 具有高度的可讀性和可維護性,避免重復造輪子。
二、適用場景:
場景 示例 數據驗證 檢查郵箱、手機號、身份證號碼、IP地址、URL是否合法 數據提取 從JSON、HTML、日志中找到特定字段 批量替換 替換文本文件中的格式 日志分析 解析nginx/apache日志提取訪問IP、請求時間 爬蟲分析 對爬蟲的數據進行分析 IDE/文本編輯器查找替換 實現大量重復代碼的查找和替換 正則特別合適的場景是有明確模式的文本處理,可以大量減少代碼量,提高效率。
三、正則表達式具體內容
1.基礎匹配
符號 功能 示例 匹配內容 abc 精確匹配 cat 僅匹配“cat” . 任意單個字符 c.t "cat",“cut”,但不匹配"ct" [] 匹配方括號中任意一個字符 [abc] “a”,“b”,“c” [^] 匹配不在方括號內字符
[^0-9] 非數字字符 2. 預定義字符類
符號 功能 \d 數字,等同[0-9] \D 非數字,等同[^0-9] \w 單詞字符 \W 非單詞字符 \s 空白字符(例如空格、制表、換行) \S 非空白字符 3. 量詞
符號 功能 * 0次或者多次 + 一次或者多次 ? 0次或1次 {n} 恰好n次,例如a{3}->“aaa” {n,} 至少n次,例如a{2,}->"aa"/"aaa" {n,m} n到m次,例如a{2,4}->"aa"/'aaa"/"aaaa" 4. 邊界與位置
符號 功能 ^ 行首才匹配,例如^abc->"abc" $ 行尾才匹配,例如abc$->"xyzabc" \b 單詞邊界,例如\bcat\b->可以匹配 "The cat sat on the mat." 中的 "cat"
但不匹配 "category" 中的 "cat"。
\B 非單詞邊界 5. 分組與引用
符號 功能 (abc) ? ? ? ? 分組,整體作為一個單元
例子:
(go)+
可以匹配 "go", "gogo", "gogogo" 等。捕獲例子:
(\d{4})-(\d{2})-(\d{2})
可以匹配日期 "2025-08-12",并分別捕獲年份、月份和日期。6. 轉義字符與特殊字符
符號 功能 \ 轉義特殊字符,使其變為普通字符 | 用于在兩個或多個模式中選擇一個。
例子:
cat|dog
匹配 "cat" 或 "dog"。