是不是在整个编程世界里的正则表达式都是一样的?

作者&投稿:蓍博 (若有异议请与网页底部的电邮联系)
任何语言都支持正则表达式么~

并不一定,像VB6和之前的版本就不支持,在VBS中通过RegExp对象提供支持,而且各语言对正则支持情况也有差别.

基本都是一样的,不同的语言/工具中,可能会有一点细微的区别,或者某些语言有一些自定义的扩展用法等,不过最基础的用法都是一样的。

不一样,有好多版本.
正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创新地将神经系统中的神经元描述成了小而简单的自动控制元,从而作出了一项伟大的工作革新。 在1956 年,出生在被马克·吐温(Mark Twain)称为“美国最美丽的城市之一的”哈特福德市的一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。 之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。Jeffrey Friedl 在其著作“Mastering Regular Expressions (2nd edition)”中对此作了进一步阐述讲解,如果你希望更多了解正则表达式理论和历史,推荐你看看这本书。 自此以后,正则表达式被广泛地应用到各种UNIX或类似于UNIX的工具中,如大家熟知的Perl。Perl的正则表达式源自于Henry Spencer编写的regex,之后已演化成了pcre(Perl兼容正则表达式Perl Compatible Regular Expressions),pcre是一个由Philip Hazel开发的、为很多现代工具所使用的库。正则表达式的第一个实用应用程序即为Unix中的 qed 编辑器。 然后,正则表达式在各种计算机语言或各种应用领域得到了广大的应用和发展,演变成为目前计算机技术森林中的一只形神美丽且声音动听的百灵鸟。 以上是关于正则表达式的起源和发展的历史描述,到目前正则表达式在基于文本的编辑器和搜索工具中依然占据这一个非常重要的地位。 在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOW的阵营下,正则表达式的思想和应用在大部分 Windows 开发者工具包中得到支持和嵌入应用!从正则式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和发展,WINDOWS系列产品对正则表达式的支持发展到无与伦比的高度,目前几乎所有 Microsoft 开发者和所有.NET语言都可以使用正则表达式。如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windws、HP、BeOS等)、目前主流的开发语言(PHP、C#、Java、C++、VB、Javascript、Rubby等)、数以亿万计的各种应用软件中,都可以看到正则表达式优美的舞姿。

基本的正则语法是一样的,核心相同。正则表达式是独立于各种语言之外的。
但是由于各种编程语言的区别,写法略有区别。就好像三角公示,很多语言都有支持的库,但是语言实现的时候有区别,不过核心公式和表示的意义是不会变的。
比如php里面/^\d+.*?$/
java里面^\\d+.*?$
等,看着有区别,但正则的核心是一样的


是不是在整个编程世界里的正则表达式都是一样的?
不一样,有好多版本.正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创新地将神经系统中的神经元描述成了小而简单的自动控制元...

为什么很多人都觉得编程难,难在哪里?
在编程的过程中,到底难在哪里?一、难在你思路的构建 你学了很多语法,很多API,但遇到不一样的实际问题,不是简单地罗列API就能完成,而是需要你对问题进行分析,通过各种算法、数据结构等进行编程实现。而这个过程肯定是需要试错和大量时间的(如果没有熟练各种方法的话)。二、做出来容易,做好难 虽...

软件正在吞噬整个世界,大所趋,细思恐
北京时间8月21日消息,Netscape创始人、硅谷著名投资人马克·安德森(Marc Andreessen),日前在华尔街日报上发表的《软件正在吞噬整个世界》文章称,当今的软件应用无所不在并且正在吞噬整个世界。 这篇文章分析了目前 科技 行业发展趋势和原因,最后的结论称“这是一个伟大的机会,我明白该把自己的钱投向哪里”。 以下是这...

程序员的悲哀是什么?
二、程序员真的是个可悲的行业,这个行业,前浪死在沙滩上,就是青春饭,而且到最后身体还跨了。这个残酷社会,如果没有关系,仅仅靠自己打拼,又没有准备好未来的养老钱,不担心出路才怪。大家其实是同病相怜,只要醒着,就会出现各种担心。三、程序员不行,只有那么十几个城市有合适的工作,而这些...

一个不懂编程的人 ,如何踏入编程的世界
你不懂编程,那么你想踏入编程的世界,那么你首先需要了解计算机程序语言,怎么了解?那就是去学习一门计算机语言了,当今比较流行的计算机编程语言有C\/C++\/C#\/JAVA\/PHP很多很多种,你可以选择上述一种作为入门。当你学会了一门计算机语言的时候,也就对编程有了个大概的了解。编程也是分很多种类的,要看...

如果整个世界就是个程序,怎样才能获得对它编程的能力
不断学习 你的问题本质像P\/NP问题 世界上还有很多问题是P\/NP问题(不能使用计算机在有限时间内得出最佳解)如果P=NP,那么计算机将可以快速解决世界上所有的事情,那么这个世界就真的是个程序了

库克为什么说世界上所有学校都应该把编程当必修课?
我们不应该学编程,要学的仅仅是编程背后的思考方式,在一方领域里展现自己的才能,方能改变世界。 深思,库克说每个人都应该学习编程,只不过是引出这句话——编程是很多学术的交集,比如说医学又或者是环境工程都离不开编程。显然,苹果的推广工作也离不开医疗领域,Apple Watch的应用离不开医疗,Ap...

少儿编程教育遍布全球,编程教育将是世界各国下一场科技竞争
编程教育遍布全球,从美国、英国到韩国、日本。目前全世界范围内少儿编程教育渗透率最高的国家就是美国,达到了惊人的44.8%,全美的孩子差不多有一半都多多少少会编程。发达国家也都紧追其后,加拿大、德国、英国等也都在国家教育政策层面设法提高少儿编程教育的渗透率,形成了庞大的第二梯队。 英国,5...

孩子要不要学编程课?编程课的未来发展,到底是什么样的?
而选择提前让孩子学习编程,很有可能会固化他们的思维方式,不利于天赋得发展。 4,编程是大学的专业课程是有原因的。 编程本身初级的是很容易的很好理解的。现在电子,互联网技术发展越来越高级,简单得编程或许可以改改网页,但是却没法在这么复杂的编程体系的世界里体现多大的价值。 这是两个问题,应该先回答第二个...

C语言是不是世界上最好的编程语言?真的永远不会过时吗?
首先,C语言是世界上最好的编程语言,它是其他的编程语言需要膜拜的编程语言,它是编程语言世界“神一样”的存在,永远不可能过时,因为它是指引初学者学习编程语言的“灯塔”。其后任何的编程语言,都有C语言的身影。它们出现,由于时间的推移和应用的特殊需要,C语言搭建的家园必须扩建,但是它们的基石离...

连州市15964483223: 是不是在整个编程世界里的正则表达式都是一样的? -
可傅复方: 基本的正则语法是一样的,核心相同.正则表达式是独立于各种语言之外的. 但是由于各种编程语言的区别,写法略有区别.就好像三角公示,很多语言都有支持的库,但是语言实现的时候有区别,不过核心公式和表示的意义是不会变的. 比如php里面/^\d+.*?$/ java里面^\\d+.*?$ 等,看着有区别,但正则的核心是一样的

连州市15964483223: 正则表达式 是否在所有系统中通用 -
可傅复方: 编程语言是由该语言的编译器编译成机器语言执行,不同的语言有不同的编译器,所以,不同的语言下的正则表达式写法是不一样的.与操作系统没有太大的关系.除非该语言调用了操作系统的API.

连州市15964483223: 学编程是不是必须要学正则表达式? -
可傅复方: 当然不是学编程就一定要学正则表达式,因为正则表达式是完全可以被字符处理函数代替的,但是要成为编程高手一定是要学正则表达式的,因为用正则做字符处理更方便,只用字符处理太麻烦了

连州市15964483223: 怎么学好Linux中的正则表达式?本人正在摸索中,不是很顺利,望大哥们提些建议?
可傅复方: 朋友 你好 正则表达式广泛出现在UNIX/Linux相关的各种领域和多种编程语言里.从常见的shell命令到大名鼎鼎的Perl语言再到当前非常流行的PHP,它都扮演着一个重要的角色.甚至windows的命令行控制台也支持正则表达式.如果你是一个...

连州市15964483223: 正则表达式.+?是否包含换行符 -
可傅复方: “ . ” 匹配除“\n”之外的任何单个字符.要匹配包括“\n”在内的任何字符,请使用像“[\s\S]”的模式.

连州市15964483223: python正则中的是什么意思 -
可傅复方: Python中字符串前面加上 r 表示原生字符串,与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰.假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠.Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示.同样,匹配一个数字的"\\d"可以写成r"\d".有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观.

连州市15964483223: C#正则表达式,"\1"是什么意思? -
可傅复方: \0是完整正则匹配的自身 \1 就是用户用()定义的第一组 同理\2 就是第二组 例如(\d)(\w) 匹配1b 这时 \0是1b \1是1 \2是b

连州市15964483223: 请问这个python正则表达式是什么意思?matches = re.findall('([^\s\\\]+)', line) -
可傅复方: 这个是用来匹配不带空格和反斜杠的字符串. 这里的^匹配非中括号里的字符;\s代表空格;\\\代表字符反斜杠(正则表达式需要双反斜杠来转义,因为\在正则表达式中本身就具有含义) line = 'haha \\\\ \\ hehe' matches = re.findall('([^\s\\\]+)', line) print matches # ['haha', 'hehe']望采纳!

连州市15964483223: Java的正则表达式,.net的正则表达式,和javascript的正则表达式,是不是都是不一样的? -
可傅复方: 同意 闹事银霞 的观点.现在大多数语言,用的正则引擎都是差不多.也就是说,你就抓着你需要的那一门,钻研一个月,将简单的匹配,前匹配,后匹配什么的搞明白,三种模式 贪婪侵占懒惰 弄清楚, 组的使用, 等等,等这些明白之后.熟练运用之后,你就发现再看js的正则,就很easy了.因为正则的写法很雷同,而只是前后多加了个/*而已, 所以,别的语言下的正则,也基本是规律 比如我,我就是研究的java正则,研究的差不多之后, 然后数据库的正则,js的正则,就没看语法,自己就能写出来.呵呵 没有必要为这个烦恼.很不值得

连州市15964483223: linux里面,\d 是不是正则表达式的元字符? -
可傅复方: 貌似用\d是不行的,Linux里建议使用 [0-9] 或者更符合POSIX标准的 [[:digit:]] 例如:echo 123abc | grep "^[0-9]" 或 echo 123abc | grep "^[[:digit:]]" man grep,里面有简单介绍:Finally, certain named classes of characters are predefined ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网