Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3896538
  • 博文数量: 408
  • 博客积分: 10227
  • 博客等级: 上将
  • 技术积分: 9820
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 21:48
个人简介

非淡泊无以明志,非宁静无以致远

文章存档

2022年(1)

2021年(1)

2020年(2)

2019年(5)

2018年(4)

2017年(3)

2016年(24)

2015年(8)

2014年(7)

2013年(3)

2012年(1)

2011年(23)

2010年(179)

2009年(147)

分类:

2009-11-25 22:30:19

1.     基本元字符:

Perl 里的模式识别所有的 12 个传统的元字符(所谓十二烂人),以及它们的所有潜能和表现力。许多其他正则表达式包里也能看到它们:

\  |  ( )  [  {  ^  $  *  +  ?  .

  它们中有些曲解规则,令跟在它们后面本来正常的字符变成特殊的。我们不喜欢把长序列叫做“字符”,因此,如果它们组成长序列后,我们叫它们元符号(有时候干脆就叫“符号”)。但是在顶级,这十二个元字符就是你(和 Perl)需要考虑的所有内容。任何东西都是从这里开始的。

  有些简单的元字符就代表它们自己,象 . ^ $。它们并不直接影响它们周围的任何东西。有些元字符运行起来象前缀操作符,控制任何跟在后面的东西,象反斜杠 \ 。其他的则像后缀操作符,控制紧排在它们前面的东西,像 *+,和 ?。有一个元字符:|,其作用象中缀操作符,站在它控制的操作数中间。甚至还有括弧操作符,作用类似包围操作符,控制一些被它包围的东西,像 (...) [...]。圆括弧尤其重要,因为它们在内部声明 | 的范围,而在外部声明 *+ ? 的范围。

  如果你只学习十二个元字符中的一个,那么选反斜杠。(恩。。。还有圆括弧)这是因为反斜杠令其他元字符失效。如果在一个 Perl 模式里,一个反斜杠放在一个非字母数字字符前,这样就让下一个字符成为一个字面的文本。如果你象在一个模式文本里匹配十二个元字符中的任何一个,你可以在它们前面写一个反斜杠。因此,\. 匹配一个真正的点,\$ 匹配真正的美元符,\\ 是一个真正的反斜杠等等。这样做被称做“逃逸”元字符,或曰“引号包围之”,或者有时候就叫做“反斜杠某”。(当然,你已经知道反斜杠可以用于禁止在双引号字串里进行变量代换。)

  虽然一个反斜杠把一个元字符转换成一个文本字符,它对后继的字母数字字符的作用却是完全另一码事。它把本来普通的东西变特别。也就是说,它们在一起形成元字符。我们在里给出了一个按字母排序的元字符表。

2.元字符表

  在下面的表格中,如果给定的符号是可以计量的(可以用多或少来描述匹配的字符),则对应的“原子性”一列则“是”。同样,我们使用“...”来表现“其它的”,如果你觉得下面表格中的解释不够清晰,可以参考后面关于详细讨论“...”含义的部分。

  列出了基本的元字符。前面四个是我们前面提及的结构化元字符,后三个是单一元字符。

 5.4. 元字符表

符号

原子性

含义

\...

变化

反逃逸下一个非字母数字字符,转意下一个字母数字(可能)

...|...

可选(匹配前者或者后者)。

(...)

分组(当作单元对待)。

[...]

字符表(匹配一个集合中的一个字符)。

^

如果在字串开头则为真(或者可能是在任何换行符后面。)

.

匹配一个字符(通常除了换行符以外)。

$

在字串尾部时为真(或者可能是在任何换行符前面)。

阅读(1860) | 评论(0) | 转发(0) |
0

上一篇:分治法简介

下一篇:量词与正则序列

给主人留下些什么吧!~~