【常用正則表達(dá)式】在日常的編程和文本處理中,正則表達(dá)式(Regular Expression)是一種非常強(qiáng)大的工具,用于匹配、查找、替換和提取字符串中的特定模式。無論是進(jìn)行數(shù)據(jù)驗證、日志分析還是文本處理,掌握一些常用的正則表達(dá)式可以大大提高效率。
以下是一些在實際開發(fā)中經(jīng)常用到的正則表達(dá)式,按功能分類整理,并附上簡要說明及示例。
一、基礎(chǔ)匹配
正則表達(dá)式 | 說明 | 示例 |
`^a` | 匹配以字母 a 開頭的字符串 | "apple" 匹配,"banana" 不匹配 |
`a$` | 匹配以字母 a 結(jié)尾的字符串 | "cat" 匹配,"dog" 不匹配 |
`.` | 匹配任意單個字符(除換行符) | "a1"、"b2" 都匹配 |
`\d` | 匹配數(shù)字(0-9) | "123" 匹配,"abc" 不匹配 |
`\D` | 匹配非數(shù)字字符 | "abc" 匹配,"123" 不匹配 |
二、重復(fù)與范圍
正則表達(dá)式 | 說明 | 示例 |
`a+` | 匹配一個或多個 a | "aa", "aaa" 匹配,"a" 匹配,"b" 不匹配 |
`a` | 匹配零個或多個 a | ""、"a"、"aa" 都匹配 |
`a?` | 匹配零個或一個 a | "a" 或 "" 匹配,"aa" 不匹配 |
`[abc]` | 匹配 a、b 或 c 中的一個 | "a"、"b"、"c" 匹配,"d" 不匹配 |
`[a-z]` | 匹配小寫字母 | "a" 到 "z" 的字符都匹配 |
`[A-Z]` | 匹配大寫字母 | "A" 到 "Z" 的字符都匹配 |
`[0-9]` | 匹配數(shù)字 | "0" 到 "9" 的字符都匹配 |
三、邊界與分組
正則表達(dá)式 | 說明 | 示例 |
`\b` | 匹配單詞邊界 | "word" 中的 "w" 和 "o" 之間有邊界 |
`\B` | 匹配非單詞邊界 | 在單詞內(nèi)部匹配 |
`(abc)` | 分組匹配,將 abc 視為一個整體 | "abc123" 可匹配到 "abc" |
`(?=...)` | 正向預(yù)查,匹配后面有某內(nèi)容的字符串 | "test123" 匹配,但不包含 "123" |
`(?!...)` | 負(fù)向預(yù)查,匹配后面沒有某內(nèi)容的字符串 | "test" 匹配,但 "test123" 不匹配 |
四、常見應(yīng)用場景
場景 | 正則表達(dá)式 | 用途 |
匹配郵箱地址 | `^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$` | 驗證用戶輸入的郵箱格式 |
匹配手機(jī)號碼(中國大陸) | `^1[3-9]\d{9}$` | 檢查手機(jī)號是否符合規(guī)范 |
匹配IP地址 | `^(\d{1,3}\.){3}\d{1,3}$` | 驗證IP地址格式 |
匹配URL | `^(https?:\/\/)?([\da-z\.-]+\.[a-z\.]{2,6})([\/\w \.-])\/?$` | 提取網(wǎng)頁鏈接 |
匹配日期(YYYY-MM-DD) | `^\d{4}-\d{2}-\d{2}$` | 驗證日期格式 |
五、注意事項
- 正則表達(dá)式在不同語言中可能略有差異,如 Python、JavaScript、Java 等。
- 復(fù)雜的正則表達(dá)式容易造成性能問題,應(yīng)盡量避免過度嵌套或使用過于復(fù)雜的模式。
- 使用時建議配合測試工具(如 regex101.com)進(jìn)行調(diào)試,確保匹配結(jié)果符合預(yù)期。
通過合理運(yùn)用這些正則表達(dá)式,可以在實際開發(fā)中提高代碼的靈活性和健壯性。當(dāng)然,正則表達(dá)式的學(xué)習(xí)是一個長期積累的過程,建議結(jié)合具體項目不斷實踐和優(yōu)化。