在探索正则表达式(也称为正则表达式)时,有许多人似乎将正则表达式视为圣杯。看起来如此复杂的东西——一定是任何问题的答案。他们倾向于认为每个问题都可以用正则表达式解决。
另一方面,也有很多人不惜一切代价试图避免正则表达式。他们试图找到一种绕过正则表达式的方法,并仅仅为了它而接受额外的编码,即使正则表达式将是一个更紧凑的解决方案。
为什么正则表达式被认为如此有争议?关于它们的工作原理是否存在广泛的误解?或者正则表达式通常比较慢是一种普遍的看法?
在探索正则表达式(也称为正则表达式)时,有许多人似乎将正则表达式视为圣杯。看起来如此复杂的东西——一定是任何问题的答案。他们倾向于认为每个问题都可以用正则表达式解决。
另一方面,也有很多人不惜一切代价试图避免正则表达式。他们试图找到一种绕过正则表达式的方法,并仅仅为了它而接受额外的编码,即使正则表达式将是一个更紧凑的解决方案。
为什么正则表达式被认为如此有争议?关于它们的工作原理是否存在广泛的误解?或者正则表达式通常比较慢是一种普遍的看法?
当前回答
在某些情况下,我认为你必须使用它们。例如构建lexer。
在我看来,这是会写regexp的人和不会(或几乎不会)写regexp的人的观点。 我个人认为这是一个很好的想法,例如,有效的表单输入,它在javascript警告用户,或在服务器端语言。
其他回答
在某些情况下,我认为你必须使用它们。例如构建lexer。
在我看来,这是会写regexp的人和不会(或几乎不会)写regexp的人的观点。 我个人认为这是一个很好的想法,例如,有效的表单输入,它在javascript警告用户,或在服务器端语言。
“正则表达式:现在你有两个问题”是Jeff Atwood关于这个问题的一篇很棒的文章。基本上,正则表达式是“难”的!他们会制造新的问题。然而,它们是有效的。
正则表达式对包括我自己在内的很多人来说都是一个严重的谜。这很有效,但就像看数学方程一样。我很高兴地告诉大家,有人终于在http://regexlib.com/上创建了各种正则表达式函数的统一位置。现在,如果微软只创建一个正则表达式类,它将自动完成许多常见的事情,如消除字母或过滤日期。
我不认为人们反对正则表达式是因为它们很慢,而是因为它们很难读和写,而且很难正确。虽然在某些情况下,正则表达式为问题提供了一种有效的、紧凑的解决方案,但有时它们会被硬塞到使用易于阅读、可维护的代码部分更好的情况中。
我认为这是程序员中鲜为人知的技术。因此,它并没有被广泛接受。如果你有一个非技术经理来审查你的代码或工作,那么正则表达式是非常糟糕的。你会花几个小时写一个完美的正则表达式,而你会认为他/她写了这么少的代码,你会为这个模块得到很少的分数。 此外,正如在其他地方所说,读取正则表达式是非常困难的任务。