《精通正则表达式》笔记

正则表达式 (cleregular expression)

    正则表达式是高效,强大,便捷的文本处理工具,本身,再加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和分析文本的能
力。配合上特定语言工具提供的额外支持,正则表达式能够添加,删除,分离,叠加,插入,和休整各种类型的文本和数据。

正则表达式的组成
    
    完整的正则表达式由两种字符构成:特殊字符(special characters,如通配符*),称为“元字符”;其他为“文字”(literal),或称普通文本字符(normal text characters)。



    行起始和结束(位置匹配)

    在检查一行文本时,"^" 代表一行的开始, "$" 代表结束。如,“cat” 寻找的是一行文本中的任意位置的 “cat”,但是 “^cat” 只寻找行首的 cat, "^"用来把匹配文本
(这个表达式的其他部分匹配的字符)“锚定”在这一行的开头。同样,“cat$”之寻找位于行末的 cat,如 scat,以cat结尾的行。


    ^cat 匹配以 cat 开头的行 //错误
    ^cat 匹配以 c 作为一行的第一个字符,紧接着一个 a , 再紧接着 t 的文本。 //正确

    注:要养成按照字符理解正则表达式的习惯。脱字符和美元符号的特别之处在于,他们匹配的是一个“位置”,而不是具体文本。



    匹配若干字符之一(文本匹配)

    如过,我们想匹配单词,如“grey”,同时又不确定它是否写作“gray”,就可以使用正则表达式结构体(construct)"[……]"。它容许使用者列出在某处期望匹配的字符,>通常被称为字符组(characters class)。"e" 匹配 e,"a" 匹配 a, "[ea]" 匹配 e 或 a。

    "gr[ea]y": 先找到 g,跟着是一个r,然后是一个 a 或者 e,最后是一个y。
   
    注:"[Ss]mith" 单词首字母大小写的情况需注意,这个表达式,仍然可以匹配内嵌在单词里的smith或Smith,如blacksmith。
    
    请注意,在字符组以外,普通字符,都有“接下来是(and then)” 的意思,“gr[ae]y"——"首先匹配 g,接下来是 r ……"。这与字符组内部的情况正好相反。字符组的内容
是在同一个位置能够匹配的若干字符,所以它的意思是“或”。
    
    在一个字符组中可以列举多个字符。如[123456],匹配 1 到 6 中的任意一个数字。在字符组内部,字符组元字符(character-class metacharacter)"-"(连字符)表示>一个范围。如[0-9],[a-z]等,表示匹 配0 到 9中的任意一个数字,a 到 z 中的任意一个小写字母。和一一列举表单的意思是一样的。“[0-9a-fA-F],[A-Fa-f0-9]”用来匹配>十六进制数字,顺序无所谓。除此外,可以随心所欲把字符范围与普通字符相结合,如“[0-9A-z_!.?]”,能够匹配一个数字,大写字母,下划线,惊叹号,点号,或者问号。

    注:只有在字符组内部,“-” 连字符才是元字符,否则它只能匹配普通连字符号。实际,即使在字符组内部,若它出现在字符组的开头,它也不是元字符,只是一个普通

字符“—”,而不是表示一个范围。同样的道理,问号,和点号通常也被当做元字符,但是在字符粗内,则不是。

   排除型字符组(文本匹配)

    "[^……]",这个字符组会匹配任何未列出的字符。如"[^1-6]",匹配除1到6外的任何字符。字符组开头的"^",表示排除,这里列出不希望匹配的字符。

    注:排除型字符组,表示“匹配一个未列出的字符”,而不是 “不要匹配列出的字符”。两

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值