- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 正则表达式中的单元
<br />本文所有内容对编译原理有一定基础者没有任何意义!<br />而所谓的单元是我假想的一个()括起来的一个整体单位,你可以理解成运算符的优先级,其实就是这个意思,只是这个概念被弱化了。<br />很多情况下,我们都忽略了一些细节的知识点,今天冷静下来分析一个正则问题的时候,找到了一个小bug<br />(?!<a).* <br />对环视有点基础的一定能看出来这在干什么,也很容易看出来错误在什么地方。<br />(?:(?!<a).)*<br /> <br />这说明了一个小的单元概念,即 [元字符
2011-04-18 20:09:00 3065
转载 转余晟老师的正则专栏文章:(四)正则表达式的与或非
我们使用正则表达式,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的目的。要解决真正的问题,就必须有解决问题的思路,正则表达式的功能,说到底,可以归纳为三种逻辑,为了表述方便,我们分别称为与、或、非。逻辑关系说明与在某个位置,某些元素(字符、字符组或者子表达式)必须出现或在某个位置,某个元素或许不出现,或许不出现,或许长度不固定;要出现的,是某几个元素中的一个非在某个位置,某些元素不能出现一般来说,正则表达式千变万化,总是这三种逻辑的组合。比如匹配双引号字符串"quoted string"逻辑关系分
2011-04-06 23:33:00 3708
转载 转余晟老师的正则专栏文章:(三)Unicode诸问题(下)
<br />上一篇文章我们介绍了和Unicode有关的匹配问题,这篇文章我们主要讲述一下Unicode编码本身的特性,以便更好地运用正则表达式解决与Unicode相关的问题。Unicode Code Point<br />Unicode字符多种多样,除去ascii中的字母、数字、标点和中文字符,还包括其它多种语言和多种符号,有些符号甚至很难打出来(比如表示商标注册的?),这时候该如何表示呢?再说远一点,如果我们想用一个字符组匹配所有中文字符,能不能像『[a-z]』那样呢?<br />所幸,每一个Unic
2011-04-06 23:32:00 2965
转载 转余晟老师的正则专栏文章:(二)Unicode诸问题(上)
<br />关于正则表达式的文档很多,但大部分都是英文的,即便有中文的文档,也翻译或改编自英文文档。在介绍功能时,这样做没有大问题,但真要处理文本,就可能会遇到一些英文开发或应用环境中难得见到的问题。比如中文之类多字节字符的匹配,就是如此。所以,这篇文章专门谈谈正则表达式如何处理多字节字符,更准确地说,是如何处理Unicode编码的文本(为什么只提到Unicode编码,而没有提到其它编码,理由在后面详述)。<br />首先介绍关于编码的基础知识:<br />通常来说,英文编码较为统一,往往采用asc
2011-04-06 23:30:00 2671
转载 转余晟老师的正则专栏文章:(一):纠结的转义
<br />【编者按】正则表达式一直是开发者工具箱中趁手的利器,但很多人对此仍是一知半解。这次InfoQ中文站有幸邀请到来自盛大创新院的余晟,开辟《正则表达式》的专栏,为读者讲解正则表达式的一些技巧和概念。他还是《精通正则表达式》和《技术领导之路》的译者。<br />用过正则表达式的人都知道,正则表达式中有一类叫做“元字符(meta-character)”的特殊符号,它们并不匹配自身对应的字符,而具有其他的含义。比如脱字符『^』表示“定位到字符串/行的开头”,加号『+』表示“之前的元素重现1次以上。如果
2011-04-06 23:29:00 2711
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人