昨天我迷路了,当我试图用正则表达式生成一个正则表达式时,我未能逃脱转义转义(对于 JavaScript)。正则表达式非常适合 CLI Unix 管道链和曾经使用过的 shell 脚本,或者当我想要一个快速而肮脏的解决方案时,我不想维护一个使用正则表达式的程序。正则表达式不可读,难以调试等,等等。
除了正则表达式,还有其他面向行的字符串操作包/语言/任何东西吗?还是一种产生正则表达式的好语言?
昨天我迷路了,当我试图用正则表达式生成一个正则表达式时,我未能逃脱转义转义(对于 JavaScript)。正则表达式非常适合 CLI Unix 管道链和曾经使用过的 shell 脚本,或者当我想要一个快速而肮脏的解决方案时,我不想维护一个使用正则表达式的程序。正则表达式不可读,难以调试等,等等。
除了正则表达式,还有其他面向行的字符串操作包/语言/任何东西吗?还是一种产生正则表达式的好语言?
就我而言,正则表达式实际上已经相当高级了。它们肯定是迟钝的,学习曲线很陡峭,但它很短:你可以在一个 HTML 页面上阅读你需要知道的关于正则表达式风格的所有内容,这对于例如 Python 来说肯定不是真的。
所以,如果你有一个正则表达式,但它让你觉得你的大脑正在从你的耳朵里漏出来,如果它更明确的话你会更开心,我会下降一个水平,而不是上升。编写某种状态机而不是仅仅使用模式匹配甚至可以澄清你的逻辑。
我的 Twitter 流上出现了一个好东西:VerbalExpressions。
从文档中引用:
var tester = VerEx()
.startOfLine()
.then( "http" )
.maybe( "s" )
.then( "://" )
.maybe( "www." )
.anythingBut( " " )
.endOfLine();
这就是我所说的:可读、可维护的代码,而不是模糊的特殊字符系列。