看不懂正則表達式?試試可視化工具吧!

1. 前言

正則表達式是一種用來匹配字符串的強有力工具。設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串我們就認爲它“匹配”了,否則該字符串就是不合法的。

日常開發中常常會使用正則表達式,例如:對數據格式進行校驗(判斷一個字符串是否是合法的Email格式、合法的IP格式或是否按照特定格式的數字和字母拼接);又或是將日誌詳情按照某種格式匹配後採集上報。複雜的正則表達式可讀性很差,對地球人來說掌握比較困難,下定決心繫統的學習後又會很快的忘記。在有大模型輔助編程前,如果要寫一個複雜的正則表達式可能需要花費不少精力搜索資料和驗證,有了大模型幫忙確實可以大大簡化書寫的過程。但不管是之前還是現在,可能對正則表達式執行的正確性仍不太確定(大模型也可能給出錯誤的結果或者由於描述不準確導致給出不符合預期的結果),這時候如果能對正則表達式可視化的分析,那麼將大大增加使用的信心。

2. 工具推薦

2.1 簡介

regex-vis是一個輔助學習、編寫和驗證正則的工具,輸入一個正則表達式後,會生成它的可視化圖形。然後可以點選或框選圖形中的單個或多個節點,再在右側操作面板對其進行操作,具體操作取決於節點的類型,比如在其右側插入空節點、爲節點編組、爲節點增加量詞等。項目開源,可以拉取代碼到本地編譯執行,也可以直接在regex-vis.com體驗它的功能。





2.2 原理

通過詞法分析和語法分析將一個正則表達式轉換爲 AST(Abstract Syntax Tree)。其中詞法分析將正則字符串轉爲 Tokens,Tokens 再通過語法分析轉爲 AST。實現源碼參考Parser





2.3 舉例

下面列舉一些常用的正則表達式和對應的可視化圖,點擊小標題超鏈接可以直接跳轉到RegexVis頁面查看。

郵箱

只允許英文字母、數字、下劃線、英文句號、以及中劃線組成。

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$





域名

^((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?.)+[a-zA-Z]{2,6}(/)





IP

((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d).){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))





URL

^https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#()?&//=]*)$





HTML標籤

^<([a-z]+)([^<]+)*(?:>(.*)</\1>|\s+/>)$





3. 擴展閱讀

•正則表達式30分鐘入門教程

•正則表達式語言 - 快速參考

•常用正則表達式

•正則表達式手冊

作者:京東科技 謝驍

來源:京東雲開發者社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章