加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于正则表达式

发布时间:2020-12-13 19:34:56 所属栏目:百科 来源:网络整理
导读:缘起 由于一些情况,在分析Randoop的源代码,看到一些关于正则表达式的代码,想着自己接触正则表达式也有一段时间了,从自己接触《编译原理》到将操作系统换为Ubuntu,体会到正则表达式的强大的力量。所以想写一些简单的介绍正则表达式的文章。 正文 正则表

缘起

由于一些情况,在分析Randoop的源代码,看到一些关于正则表达式的代码,想着自己接触正则表达式也有一段时间了,从自己接触《编译原理》到将操作系统换为Ubuntu,体会到正则表达式的强大的力量。所以想写一些简单的介绍正则表达式的文章。

正文

  正则表达式(这里提供的百度百科的链接,也可以参考Wikipedia的解释对正则表达式的解释)是个处理文本字符串的极其强大工具,其在字符串模式-匹配和字符串模式替换方面富有弹性,应用非常之广泛。可以想到的主流语言几乎都支持正则表达式,无论是通过语言内置(Perl,Python),还是通过各种第三方库(C/C++,Java)

  正则表达式的引擎已被许多普通的Unix工具所实现,包括grepawkviEmacs,而且这些工具的正则表达式之间彼此兼容,是构成世界的基础。此外,许多使用比较广泛的脚本语言也支持正则表达式,比如PythonTclJavaScriptRuby,以及最著名的Perl 正则表达式的理论部分涉及形式语言与自动机部分的知识,正则表达式属于乔姆斯基语言层次的第三个层次,编程语言属于第二个层次,而图灵机属于第一个层次。关于正则表达式,NFA,DFA以及乔姆斯基语言层次可以参考《编译程序设计艺术理论与实践》,貌似网上有的下载。

关于正则表达式的全面的介绍,可以参考Jeffrey Frieldl的《Mastering Regular Expressions》,中文版译为《精通正则表达式》,网上有的扫描版的下载,这里提供一个链接:http://pan.baidu.com/s/1tHQXe

关于正则表达式的介绍,在oschina看到一个不错的博客文章:正则表达式30分钟入门教程

Java中对正则表达式是通过jar包来实现的,其实现有很多中,其中有:1.Sun提供了一个java.util.regex包 2.著名的Jakarta-ORO库。

java.util.regex的使用:最主要就是Pattern和Matcher这两个类,Pattern类是用来表达和陈述所要搜索模式的对象Matcher类是真正影响搜索的对象。还有一个异常类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出异常。关于这个包的使用有很多的介绍,百度一下“java正则表达式”可以找到一堆。不过有些讲得很乱,这里提供一个介绍的比较清晰的:http://www.52php.cn/article/p-vfkrxovv-bap.html

Jakarta-ORO是最全面的正则表达式API之一,与Perl5正则表达式完全兼容,性能优化得最好的之一。具体的使用可以通过参考Jakarta-ORO官方提供的文档,官方地址为:http://jakarta.apache.org/oro/.这里参考:http://www.52php.cn/article/p-fzquetib-go.html(注:之所以提供自己转载的链接是应为自己没找到当时的原作者的网址)

C/C++中对正则表达式的支持也是通过库实现的,有个名为deelx的实验式的正则引擎,可以通过如下的地址获取:http://www.regexlab.com/zh/deelx/

Perl和Python各自都有自己的官方网站,分别是www.perl.org和www.python.org,其中对正则表达式介绍的非常的详尽。不过文档是用英语写的,英语不好的话可能看起来就稍微困难一下,结合着一些翻译软件,看懂还是没有没有问题的,毕竟科技英语比较直白浅显。

Ruby是对Perl的继承和发展,其对正则表达式的支持也是相当的强大的,官方地址为:https://www.ruby-lang.org/en/,打开的比较的慢,至于原因可以参考知乎的答案:HTTPS 要比 HTTP 多用多少服务器资源?

小结

正则表达式是程序员的一大利器,说是神器也可以。早日掌握这一神器对自己的未来的程序员生涯非常重要。整体上来说,网络上的资料还是比较的杂的,于是写了这篇博客方便自己以及他人查阅。

参考文献

1.百度词条:http://baike.baidu.com/view/94238.htm

2.维基词条:http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

3.http://www.52php.cn/article/p-vfkrxovv-bap.html

4. 以及其他的一些网址

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读