正则表达式

正则表达式的形式一般如下:/love/

其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。

正则表达式提供了专门的“元字符”:

+”元字符规定其前导字符必须在目标对象中连续出现一次或多次

*”元字符规定其前导字符必须在目标对象中出现零次或连续多次

?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。例如,

/jim{2,6}/

上述正则表达式规定字符m可以在匹配对象中连续出现2-6

 

在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。

"s:用于匹配单个空格符,包括tab键和换行符;

"S:用于匹配除单个空格符之外的所有字符;

"d:用于匹配从09的数字;

"w:用于匹配字母,数字或下划线字符;

"W:用于匹配所有与"w不匹配的字符;

. :用于匹配除换行符之外的所有字符。

(说明:我们可以把"s"S以及"w"W看作互为逆运算)

 

除了我们以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。

较为常用的定位符包括: ^, $, "b 以及 "B”。

^”定位符规定匹配模式必须出现在目标字符串的开头

$”定位符规定匹配模式必须出现在目标对象的结尾

"b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一

"B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

同样,我们也可以把“^”和“$”以及“"b”和“"B”看作是互为逆运算的两组定位符。

 

举例来说:

/^hell/

因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 hell, hello”或 hellhound”开头的字符串相匹配。

/ar$/

因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 car, bar”或 ar 结尾的字符串相匹配。

/"bbom/

因为上述正则表达式模式以“"b”定位符开头,所以可以与目标对象中以 bomb, bom”开头的字符串相匹配。

/man"b/

因为上述正则表达式模式以“"b”定位符结尾,所以可以与目标对象中以 human, woman”或 man”结尾的字符串相匹配。

为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如:

/[A-Z]/

上述正则表达式将会与从AZ范围内任何一个大写字母相匹配。

/[a-z]/

上述正则表达式将会与从az范围内任何一个小写字母相匹配。

/[0-9]/

上述正则表达式将会与从09范围内任何一个数字相匹配。

/([a-z][A-Z][0-9])+/

上述正则表达式将会与任何由字母和数字组成的字符串,如 aB0 等相匹配。这里需要提醒用户注意的一点就是可以在正则表达式中使用 () 把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中。因此,上述正则表达式将无法与诸如 abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。

如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 |”。例如:

/to|too|2/

上述正则表达式将会与目标对象中的 to, too, 2 相匹配。

正则表达式中还有一个较为常用的运算符,即否定符 [^]”。与我们前文所介绍的定位符 ^ 不同,否定符 [^]”规定目标对象中不能存在模式中所规定的字符串。例如:

/[^A-C]/

上述字符串将会与目标对象中除AB,和C之外的任何字符相匹配。一般来说,当“^”出现在 []”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符。

最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“"”。例如:

/Th"*/

上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。



 

 

 

 

posted @ 2008-08-19 14:23  混混的IT生涯  阅读(257)  评论(0编辑  收藏  举报