博客 / 詳情

返回

以為是貓踩了鍵盤?這串“亂碼”其實能幫你省下兩小時加班

望着屏幕上那行 ^([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.1
25[0-5] 匹配 250-255
2[0-4][0-9] 匹配 200-249
[01]?[0-9][0-9]? 匹配 0-199 (支持省略前導0)

💡 優化建議
建議在 Python 中使用 ipaddress 模塊進行校驗,正則僅用於初步提取,因為正則驗證 IPv4 的完整合法性(如段數、範圍)會導致表達式過於複雜,維護成本極高。

看,這就是“專家”“工具人”的區別。它不僅寫出了包含“負向先行斷言”的高級貨,還良心地建議你不要過度依賴正則。

把“咒語”變成“武器”

掌握了這套指令,你就相當於隨身帶了一位精通10種編程語言正則特性的老法師

  • 做爬蟲時,讓它幫你精準定位網頁裏的數據,不再怕HTML結構微調。
  • 寫表單時,讓它生成最嚴謹的校驗規則,不再怕用户亂填數據。
  • 查日誌時,讓它幫你快速過濾出關鍵錯誤,不再眼花繚亂。

別再讓那串“貓踩出來的亂碼”成為你加班的理由。複製這條指令,去馴服那些桀驁不馴的字符吧。畢竟,我們是寫代碼的人,不是被代碼折磨的人。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.