订阅 订阅  :: 管理

2011年4月6日

摘要: 我们使用正则表达式,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的目的。要解决真正的问题,就必须有解决问题的思路,正则表达式的功能,说到底,可以归纳为三种逻辑,为了表述方便,我们分别称为与、或、非。逻辑关系说明与在某个位置,某些元素(字符、字符组或者子表达式)必须出现或在某个位置,某个元素或许不出现,或许不出现,或许长度不固定;要出现的,是某几个元素中的一个非在某个位置,某些元素不能出现一般来说,正则表达式千变万化,总是这三种逻辑的组合。比如匹配双引号字符串"quoted string"逻辑关系分析与首尾的双引号字符必须出现或两个双引号之间的字符个数是不确定的(如 阅读全文

posted @ 2011-04-06 23:33 hfCoder 阅读(334) 评论(0) 推荐(0)

摘要: 上一篇文章我们介绍了和Unicode有关的匹配问题,这篇文章我们主要讲述一下Unicode编码本身的特性,以便更好地运用正则表达式解决与Unicode相关的问题。Unicode Code PointUnicode字符多种多样,除去ascii中的字母、数字、标点和中文字符,还包括其它多种语言和多种符号,有些符号甚至很难打出来(比如表示商标注册的?),这时候该如何表示呢?再说远一点,如果我们想用一个字符组匹配所有中文字符,能不能像『[a-z]』那样呢?所幸,每一个Unicode字符都对应自己的Unicode编码,也就是Unicode编码表中的一个代码点(Code Point),所以在正则表达式中的 阅读全文

posted @ 2011-04-06 23:32 hfCoder 阅读(170) 评论(0) 推荐(0)

摘要: 关于正则表达式的文档很多,但大部分都是英文的,即便有中文的文档,也翻译或改编自英文文档。在介绍功能时,这样做没有大问题,但真要处理文本,就可能会遇到一些英文开发或应用环境中难得见到的问题。比如中文之类多字节字符的匹配,就是如此。所以,这篇文章专门谈谈正则表达式如何处理多字节字符,更准确地说,是如何处理Unicode编码的文本(为什么只提到Unicode编码,而没有提到其它编码,理由在后面详述)。首先介绍关于编码的基础知识:通常来说,英文编码较为统一,往往采用ascii编码或兼容ascii的编码(即编码表的前127位与ascii编码一致,常用的各种编码,包括Unicode编码都是如此)。也就是说 阅读全文

posted @ 2011-04-06 23:30 hfCoder 阅读(166) 评论(0) 推荐(0)

摘要: 【编者按】正则表达式一直是开发者工具箱中趁手的利器,但很多人对此仍是一知半解。这次InfoQ中文站有幸邀请到来自盛大创新院的余晟,开辟《正则表达式》的专栏,为读者讲解正则表达式的一些技巧和概念。他还是《精通正则表达式》和《技术领导之路》的译者。用过正则表达式的人都知道,正则表达式中有一类叫做“元字符(meta-character)”的特殊符号,它们并不匹配自身对应的字符,而具有其他的含义。比如脱字符『^』表示“定位到字符串/行的开头”,加号『+』表示“之前的元素重现1次以上。如果需要匹配这些字符本身,需要用反斜线来转义,匹配『^』就应该用/^,匹配『+』就应该用/+。看起来有点麻烦,但这样的元 阅读全文

posted @ 2011-04-06 23:29 hfCoder 阅读(253) 评论(0) 推荐(0)