techsir 登陆 |注册|TS首页
  首页 快活林 猿氏悟语

PHP和正则表达式教程集合

By: 冰客 发表于 2008-11-7 14:26:10 · 19455次点击   回复:20   
19455次点击
20个回复  |  直到 2008-11-7 14:26:10
   
  Reply   
冰客      2008-11-7 14:26:10
*

  匹配 0 个或多个的数量限定符

  +

  匹配 1 个或多个的数量限定符

  {

  最少/最多数量限定开始

  }

  最少/最多数量限定结束

  模式中方括号内的部分称为“字符类”。字符类中可用的元字符为:

  

  通用转义字符

  ^

  排除字符类,但仅当其为第一个字符时有效

  -

  指出字符范围
在这里,最值得一提是“”这个元字符。之所以重点对它进行讲解是因为这一个元字符有多种不同的用法,在不同情况下代表不同的含义,而且使用频率非常高,是个很容易让人迷惑的地方。

  第一种用法前面我们已经提过,是作为通用转义字符使用,如果其后跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义。此种将反斜线用作转义字符的用法适用于无论是字符类之中还是之外。例如“”代表一个单独的反斜线“”。

  第二种用途提供了一种在模式中以可见方式去编码不可打印字符的方法。模式中完全可以包括不可打印字符,除了代表模式结束的二进制零,例如,可以用“a” 代表alarm,即 BEL 字符(0x07),或用“cx”代表"control-x",其中 x 是任意字符。当然,这种方法表示的不一定非得是不可打印字符,实际上,可以用“xhh(十六进制代码为 hh 的字符)”和“ddd(八进制代码为 ddd 的字符)”来以编码的形式表达任何单字节字符,例如“40”可以用来表示空格。

  反斜线的第三个用法是指定通用字符类型,这些字符类型序列可以出现在字符类之中和之外。每一个匹配相应类型中的一个字符。如果当前匹配点在目标字符串的结尾,以上所有匹配都失败,因为没有字符可供匹配。有以下这些常见的通用字符类:

  d 任一十进制数字

  D任一非十进制数的字符

  s任一空白字符

  S任一非空白字符

  w任一“字”的字符

  W任一“非字”的字符

  反斜线的第四个用法是某些简单的断言,关于断言的讨论我们放在后面,这里先不加讨论。

  反斜线的最后一个用法是逆向引用。关于逆向引用,我们会在后面讨论逆向引用的部分来做进一步的讨论。

  我们已经看到,反斜线的众多用法,其中一些涉及到了以后才讲的内容。我们在模式中遇到反斜线时一定要注意它具体是哪一种用途以免疑惑。

  另外两个方括号也是非常重要的元字符,左方括号开始了一个字符类,右方括号结束之。单独一个右方括号不是特殊字符。字符类匹配目标中的一个字符,该字符必须是字符类定义的字符集中的一个;除非字符类中的第一个字符是音调符(^),此情况下目标字符必须不在字符类定义的字符集中。如果在字符类中需要音调符本身,则其必须不是第一个字符,或用反斜线转义。例如,[^A-Z]表式非大写字符。

  其它元字符我们会在以后的文章中结合相关内容介绍。
123
添加一条新回复
您需要登录后才可以回帖 登录 | 成为会员 新浪微博登陆

标签云|手机版|科技先生 ( 京ICP备07036130号 Powered by Discuz! X )

GMT+8, 2024-12-22 17:04