正则表达式是编程的必要条件吗?
一个人可以很容易地没有他们,但有一个人应该(恕我直言)知道基本知识,原因有两个.
1)RegEx可能是解决手头问题的最佳解决方案(见下图)
2)当你在别人的代码中看到正则表达式时,它不应该是100%神秘的.
preg_match('/summarycount">.*?([,\d]+)<\/div>.*?Reputation/s', $page, $rep);
这段代码很简单但是如果你不知道RegEx那么第一个参数中的东西也可能是火星语言.一旦你学习了基础知识,这里使用的RegEx实际上非常简单,并且为了让你远远超过http://www.regular-expressions.info/,他们有很多关于RegEx的信息及其对不同的各种意见平台/语言他们也有一个很好的入门教程.在看完RegexBuddy之后,它可以帮助你构建RegExs,当你构建它们时,如果你看它的功能那么它可以帮助你精益,它到目前为止是我用过的最好的39.95美元.
原创漫画
是.您可以在没有它们的情况下进行管理,但您至少应该学习基础知识,因为大多数计算任务都可以使用它们.从长远来看,你将节省很多痛苦和麻烦.一旦你克服了最初的'wtf'阶段,正则表达式比你想象的容易得多.
我会说不,他们不是必须的.你可以在不了解它们的情况下成为一名优秀的程序员.
我发现我使用正则表达式主要用于数据操作的一次性任务,而不是实际放入应用程序代码.它们可以方便地验证输入数据,但是现在您的控件通常会为您执行此操作.
一点也不.如果没有它们,你可以用正则表达式完成任何事情.
但是,它是一个功能强大的模式匹配系统,因此使用简单的正则表达式模式很容易实现的一些事情需要很多代码才能完成.
例如,这个:
s = Regex.Replace(s, "[bcdfghjklmnpqrstvwxz]", "$1o$1");
在没有正则表达式的情况下需要更多代码:
StringBuilder b = new StringBuilder(); foreach (char c in s) { if ("bcdfghjklmnpqrstvwxz".IndexOf(c) != -1) { b.Append(c).Append('o').Append(c); } else { b.Append(c); } } s = b.ToString();
或者如果你不是一个经验丰富的程序员,你可以轻松创建更多代码并执行非常糟糕的东西:
string temp = ""; for (int i = 0; i < s.Length; i++ ) { if ( s[i] == 'b' || s[i] == 'c' || s[i] == 'd' || s[i] == 'f' || s[i] == 'g' || s[i] == 'h' || s[i] == 'j' || s[i] == 'k' || s[i] == 'l' || s[i] == 'm' || s[i] == 'n' || s[i] == 'p' || s[i] == 'q' || s[i] == 'r' || s[i] == 's' || s[i] == 't' || s[i] == 'v' || s[i] == 'w' || s[i] == 'x' || s[i] == 'z' ) { temp += s.Substring(i, 1); temp += "o"; temp += s.Substring(i, 1); } else { temp += s.Substring(i, 1); } } s = temp;
让我这样说吧,如果你的工具包中有正则表达式,你将节省大量的时间和精力.如果你没有它们,你就不会知道你错过了什么,所以你仍然会很开心.
作为Web开发人员,我经常使用它们(输入验证,从站点提取数据等).
编辑:我意识到通过在stackoverflow上查看正则表达式标记,可以帮助您查看正则表达式所使用的一些常见问题.
我会说是的.
它们是如此普遍有用,完全没有能够至少读写简单的能力是一个非常重大的障碍.
支持正则表达式的语言
Java的
perl的
蟒蛇
PHP.
C#
Visual Basic.NET
ASP
电源外壳
JavaScript的
红宝石
TCL
VBScript中
VB6
XQuery的
XPath的
的XSD
MySQL的
神谕
PostgreSQL的
支持正则表达式的IDE和编辑器
日食
的IntelliJ
Netbeans的
凝胶
视觉工作室
用UltraEdit
JEDIT
n编辑
记事本+ +
Editpad Pro
六
emacs的
HAPEdit
PSPad
而且我们不要忘记grep
和sed
!
作为一个雇主,你宁愿拥有,一个好的程序员 - 偶尔 - 将不得不手动查找/替换数千个源文件中的一些类似的字符串,并且需要数小时或数天来完成它,或者是一个好的程序员是 - 曾经在一段时间 - 花费五年甚至10分钟制定一个正则表达式来完成,在需要他们去喝杯咖啡的时间运行同样的事情?
在这个答案中真实世界的实际用法事实上,我实际上使用正则表达式来制作这篇文章.我最初列出了以逗号分隔的散文支持它的语言.然后我重新思考它,并通过搜索表达式(\w+),
并将其替换\n* $1
为JEdit ,将格式更改为项目符号列表.随着您获得的体验越多,使用它们对于更短和更短的操作集将变得越来越具有成本效益.
不.你可以编程多年而不用触及正则表达式.当然,这意味着对于某些知道RE:s的人会使用它们的情况,你会做其他事情.解决特定问题的方法总是不止一种,而正则表达式只是表达模式的一种方式(一种非常有效,也许是流行的方式).