yoav-lavi/melody:Melody是一種將正規表示式轉譯為DSL的工具

banq發表於2022-02-17

正規表示式非常強大,但很難讓人閱讀並進行推理。這是一種嘗試使正規表示式更具可讀性、可擴充套件性和可維護性的解決方案。
Melody 是一種語言,能夠 1-1 轉譯正規表示式,讓其更具可讀性和可維護性。維護和編輯您的表示式並將它們可靠地編譯成一致且有效的正規表示式。
當前目標是支援正規表示式的 JavaScript 實現。
 
Reddit網友意見:
類似像regexr.com、Regex101.com這樣的工具,可以向您展示正規表示式的每個部分的作用以及您可以在哪裡提供示例文字來測試它。
有人認為:在嘗試使用正規表示式做一些比實際可能更復雜的事情之後(花幾個小時讓它“完美”然後發現一個無法逾越的突破邊緣案例),儘管寫它們非常舒服,但我傾向於更多面向解析等複雜任務的 OO 解決方案。總是對正規表示式作為複雜問題的解決方案持懷疑態度。
正規表示式非常適合簡單的字串匹配/轉換,我的意思是更多的事情,比如人們嘗試在正規表示式中編寫解析器。
除了正規表示式,為了處理電話號碼,我強烈建議使用谷歌的 libphonenumber。有幾十種流行的程式語言的埠。它使驗證和規範來自世界各地的電話號碼變得非常容易。
我的男朋友知道我擅長正規表示式,所以他會把他需要做的事情發給我,我只會吐出一個正規表示式來滿足他的需要。然後我會嘗試向他解釋它是如何工作的,他的眼睛呆滯。
 
正規表示式的核心是一個有限狀態機,正規表示式中的每個字元都代表一個狀態轉換。如果您解析正規表示式的心智模型是這樣的,那麼實際上以這種方式理解狀態機要比讀起來像英語的東西更容易。
該工具提供了類似DSL的英文表達:

some of <word>;
<space>;
"1";
2 of <digit>;

但是非英文人很難讀懂,但是如果有正則基礎,下面正規表示式很容易明白:

/\w+\s1\d{2}/



 

相關文章