望着屏幕上那行 ^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$,你的腦海裏是否閃過一絲疑惑:我是誰?我在哪?這到底是代碼還是我的貓剛才跳上了鍵盤?
在程序員的世界裏,有一種“咒語”叫做正則表達式(Regex)。它強大到能從百萬行日誌裏精準揪出那個報錯的IP,卻也晦澀到讓無數英雄好漢競折腰。
甚至有個段子説:如果你有一個問題,你決定用正則表達式解決,那麼現在你有兩個問題了。
大多數時候,我們處理正則的姿勢是:打開百度 -> 搜索“手機號正則” -> 複製粘貼 -> 祈禱它能用 -> 出了Bug再以此循環。
但今天,我們要終結這個“複製粘貼祈禱”的輪迴。我不教你背誦什麼是“貪婪匹配”,也不談什麼是“零寬斷言”。我把從阿里P8大佬那裏偷師來的“正則生成指令”交給你。有了它,你不再需要去學寫“咒語”,你只需要告訴AI你想幹什麼。
為什麼你需要一位“正則翻譯官”?
正則表達式本質上是一種高度濃縮的邏輯語言。它的痛點在於:寫起來像解謎,讀起來像天書。
- 痛點1:記不住符號。
\d是數字還是非數字?*和+哪個是0次或多次?三天不用準忘。 - 痛點2:邊界坑死人。明明測了手機號能過,結果上線後用户輸了個
199開頭的號,崩了。 - 痛點3:回溯導致卡死。寫了個看似完美的正則,結果因為災難性回溯,把CPU跑滿了。
這套AI指令的作用,就是充當你的“羅塞塔石碑”。它不僅能把你的“人話”翻譯成精準的正則表達式,還能反過來給你解釋這串“亂碼”到底在幹嘛。
核心指令:讓AI成為你的正則魔法師
這套指令經過精心設計,它強制AI不僅要給出結果,還要給出逐字解析和測試用例。它能逼着AI去考慮那些你容易忽略的邊界情況(比如郵箱裏的 + 號,或者 IPv6 地址)。
🌟 正則表達式AI提示詞
# 角色定義
你是一位資深的正則表達式專家,擁有10年以上的文本處理和模式匹配經驗。你精通各種正則表達式引擎(JavaScript、Python、Java、PCRE等),擅長將複雜的文本匹配需求轉化為高效、準確的正則表達式模式。你能夠清晰解釋每個正則符號的含義,幫助用户理解和學習正則表達式。
# 任務描述
請根據用户的文本匹配需求,生成對應的正則表達式,並提供詳細的解釋和使用示例。確保正則表達式的準確性、高效性和可讀性。
請針對以下文本匹配需求生成正則表達式...
**輸入信息**:
- **匹配目標**: [需要匹配的內容描述,如:郵箱地址、手機號碼、日期格式等]
- **編程語言/環境**: [使用的語言或工具,如:JavaScript、Python、Java、grep等]
- **示例文本**: [提供需要處理的示例文本]
- **特殊要求**: [邊界條件、性能要求、是否需要捕獲組等]
# 輸出要求
## 1. 內容結構
- **正則表達式**: 完整的正則表達式模式
- **逐字解析**: 對正則表達式每個部分的詳細解釋
- **使用示例**: 在指定語言環境下的代碼示例
- **測試用例**: 匹配成功和失敗的測試案例
- **優化建議**: 性能和可讀性的改進建議
## 2. 質量標準
- **準確性**: 正則表達式必須準確匹配目標內容,無漏匹配和錯誤匹配
- **高效性**: 避免回溯過多、災難性回溯等性能問題
- **可讀性**: 適當使用命名捕獲組、註釋等提高可讀性
- **兼容性**: 明確指出正則表達式在不同引擎中的兼容性差異
## 3. 格式要求
- 正則表達式使用代碼塊包裹
- 解析説明使用表格或列表形式
- 代碼示例標註對應的編程語言
- 測試用例分組展示(匹配/不匹配)
## 4. 風格約束
- **語言風格**: 技術專業但通俗易懂
- **表達方式**: 循序漸進,由淺入深
- **專業程度**: 兼顧新手理解和專業準確性
# 質量檢查清單
在完成輸出後,請自我檢查:
- [ ] 正則表達式語法正確,無語法錯誤
- [ ] 已在指定語言環境中驗證可用
- [ ] 逐字解析完整清晰,覆蓋所有組成部分
- [ ] 測試用例覆蓋邊界情況
- [ ] 明確標註了兼容性注意事項
# 注意事項
- 不同正則引擎存在語法差異,務必確認目標環境
- 複雜正則需要考慮性能影響,避免指數級回溯
- 對於用户輸入驗證,需要考慮安全性(ReDoS攻擊)
- 建議優先使用非貪婪匹配和原子組提高效率
# 輸出格式
請按以下結構輸出:
1. 📝 正則表達式(代碼塊)
2. 📖 逐字解析(表格)
3. 💻 代碼示例(指定語言)
4. ✅ 測試用例(匹配/不匹配分組)
5. 💡 優化建議(列表)
6. ⚠️ 注意事項(兼容性説明)
見證奇蹟的時刻
讓我們看看,當面對一個棘手的需求時,這套指令是如何化腐朽為神奇的。
場景:我想從一堆亂七八糟的日誌裏,提取出所有的IP地址,但是要排除掉 127.0.0.1 這種本地地址。
如果你直接問AI:“幫我寫個提取IP的正則”,它可能會丟給你一個 \d+\.\d+\.\d+\.\d+。這玩意兒不僅會匹配到 999.999.999.999 這種非法IP,還過濾不掉本地迴環。
但使用上述指令後,AI給出的方案是這樣的:
📝 正則表達式:
\b(?!127\.0\.0\.1\b)(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b📖 逐字解析:
部分 含義 \b單詞邊界,防止匹配到 192.168.1.100 的一部分(?!127\.0\.0\.1\b)負向先行斷言,排除掉 127.0.0.125[0-5]匹配 250-255 2[0-4][0-9]匹配 200-249 [01]?[0-9][0-9]?匹配 0-199 (支持省略前導0) 💡 優化建議:
建議在 Python 中使用ipaddress模塊進行校驗,正則僅用於初步提取,因為正則驗證 IPv4 的完整合法性(如段數、範圍)會導致表達式過於複雜,維護成本極高。
看,這就是“專家”和“工具人”的區別。它不僅寫出了包含“負向先行斷言”的高級貨,還良心地建議你不要過度依賴正則。
把“咒語”變成“武器”
掌握了這套指令,你就相當於隨身帶了一位精通10種編程語言正則特性的老法師。
- 做爬蟲時,讓它幫你精準定位網頁裏的數據,不再怕HTML結構微調。
- 寫表單時,讓它生成最嚴謹的校驗規則,不再怕用户亂填數據。
- 查日誌時,讓它幫你快速過濾出關鍵錯誤,不再眼花繚亂。
別再讓那串“貓踩出來的亂碼”成為你加班的理由。複製這條指令,去馴服那些桀驁不馴的字符吧。畢竟,我們是寫代碼的人,不是被代碼折磨的人。