关于正则表达式

缘起

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

正文

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

  正则表达式的引擎已被许多普通的Unix工具所实现,包括grepawkviEmacs,而且这些工具的正则表达式之间彼此兼容,是构成Unix世界的基础。此外,许多使用比较广泛的脚本语言也支持正则表达式,比如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://blog.csdn.net/flynetcn/article/details/1557413

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

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

   Perl和Python各自都有自己的官方网站,分别是www.perl.orgwww.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://blog.csdn.net/flynetcn/article/details/1557413

4. 以及其他的一些网址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值