學(xué)习正则表达式的最好(hǎo)方法是从例子開(kāi)始,理解例子之後(hòu)再自己對(duì)例子進(jìn)行修改,实验。下面(miàn)给出了不少简单的例子,并對(duì)它们作了详细的說(shuō)明。
假设你在一篇英文小說(shuō)裡(lǐ)查找hi,你可以使用正则表达式hi。
這(zhè)几乎是最简单的正则表达式了,它可以精确匹配這(zhè)样的字符串:由兩(liǎng)个字符组成(chéng),前一个字符是h,後(hòu)一个是i。通常,处理正则表达式的工具會(huì)提供一个忽略大小写的选项,如果选中了這(zhè)个选项,它可以匹配hi,HI,Hi,hI這(zhè)四種(zhǒng)情况中的任意一種(zhǒng)。
不幸的是,很多单词裡(lǐ)包含hi這(zhè)兩(liǎng)个连续的字符,比如him,history,high等等。用hi来查找的话,這(zhè)裡(lǐ)边的hi也會(huì)被(bèi)找出来。如果要精确地查找hi這(zhè)个单词的话,我们应该使用\bhi\b。
\b是正则表达式规定的一个特殊代码(好(hǎo)吧,某些人叫(jiào)它元字符,metacharacter),代表著(zhe)单词的開(kāi)头或结尾,也就(jiù)是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配這(zhè)些单词分隔字符中的任何一个,它只匹配一个位置。
假如你要找的是hi後(hòu)面(miàn)不远处跟著(zhe)一个Lucy,你应该用\bhi\b.*\bLucy\b。
這(zhè)裡(lǐ),.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,不過(guò)它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配。因此,.*连在一起(qǐ)就(jiù)意味著(zhe)任意数量的不包含换行的字符。现在\bhi\b.*\bLucy\b的意思就(jiù)很明显了:先是一个单词hi,然後(hòu)是任意个任意字符(但不能(néng)是换行),最後(hòu)是Lucy這(zhè)个单词。
如果同時(shí)使用其它元字符,我们就(jiù)能(néng)构造出功能(néng)更强大的正则表达式。比如下面(miàn)這(zhè)个例子:
0\d\d-\d\d\d\d\d\d\d\d匹配這(zhè)样的字符串:以0開(kāi)头,然後(hòu)是兩(liǎng)个数字,然後(hòu)是一个连字号“-”,最後(hòu)是8个数字(也就(jiù)是中國(guó)的电话号码。当然,這(zhè)个例子只能(néng)匹配区号为3位的情形)。
這(zhè)裡(lǐ)的\d是个新的元字符,匹配一位数字(0,或1,或2,或……)。-不是元字符,只匹配它本身——连字符(或者减号,或者中横线,或者随你怎麼(me)称呼它)。
为了避免那麼(me)多烦人的重复,我们也可以這(zhè)样写這(zhè)个表达式:0\d{2}-\d{8}。這(zhè)裡(lǐ)\d後(hòu)面(miàn)的{2}({8})的意思是前面(miàn)\d必须连续重复匹配2次(8次)。
版权所有:兴化市妙妙网络技术有限公司 Copyright 2012 lfwl.com.cn All right reserved
地址:兴化市九洲城中城2号6-064商铺(老長(cháng)途汽车站對(duì)面(miàn),金融大厦西50米) 电话:18001423889