yoav-lavi/melody:Melody是一种将正则表达式转译为DSL的工具


正则表达式非常强大,但很难让人阅读并进行推理。这是一种尝试使正则表达式更具可读性、可扩展性和可维护性的解决方案。
Melody 是一种语言,能够 1-1 转译正则表达式,让其更具可读性和可维护性。维护和编辑您的表达式并将它们可靠地编译成一致且有效的正则表达式。
当前目标是支持正则表达式的 JavaScript 实现。
 
Reddit网友意见:
类似像regexr.com、Regex101.com这样的工具,可以向您展示正则表达式的每个部分的作用以及您可以在哪里提供示例文本来测试它。
有人认为:在尝试使用正则表达式做一些比实际可能更复杂的事情之后(花几个小时让它“完美”然后发现一个无法逾越的突破边缘案例),尽管写它们非常舒服,但我倾向于更多面向解析等复杂任务的 OO 解决方案。总是对正则表达式作为复杂问题的解决方案持怀疑态度。
正则表达式非常适合简单的字符串匹配/转换,我的意思是更多的事情,比如人们尝试在正则表达式中编写解析器。
除了正则表达式,为了处理电话号码,我强烈建议使用谷歌的 libphonenumber。有几十种流行的编程语言的端口。它使验证和规范来自世界各地的电话号码变得非常容易。
我的男朋友知道我擅长正则表达式,所以他会把他需要做的事情发给我,我只会吐出一个正则表达式来满足他的需要。然后我会尝试向他解释它是如何工作的,他的眼睛呆滞。
 
正则表达式的核心是一个有限状态机,正则表达式中的每个字符都代表一个状态转换。如果您解析正则表达式的心智模型是这样的,那么实际上以这种方式理解状态机要比读起来像英语的东西更容易。
该工具提供了类似DSL的英文表达:

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

但是非英文人很难读懂,但是如果有正则基础,下面正则表达式很容易明白:
/\w+\s1\d{2}/