實(shí)例解說(shuō)Perl 字符匹配用法
本文和大家重點(diǎn)討論一下Perl 字符匹配的概念及應(yīng)用,regularexpression可視為用來(lái)處理字符串的一種模式(pattern),其使用的格式為/pattern/。在perl語(yǔ)言的程序中,經(jīng)??梢钥吹筋?lèi)似語(yǔ)法的應(yīng)用,在cgi程序設(shè)計(jì)中也不例外。只要能夠善用文字處理模式的話(huà),要處理任何難的字符串皆可迎刃而解,
Perl 字符匹配實(shí)例解說(shuō)
如果在unix中曾經(jīng)使用過(guò)sde,awk,grep這些指令的話(huà),相信對(duì)于perl語(yǔ)言中的文字處理模式(regularexpression)應(yīng)該不會(huì)感到陌生才對(duì)。在perl語(yǔ)言中因?yàn)橛羞@個(gè)功能,所以對(duì)于字符串的處理能力是非常強(qiáng)有力的。regularexpression可視為用來(lái)處理字符串的一種模式(pattern),其使用的格式為/pattern/。在perl語(yǔ)言的程序中,經(jīng)??梢钥吹筋?lèi)似語(yǔ)法的應(yīng)用,在cgi程序設(shè)計(jì)中也不例外。只要能夠善用文字處理模式的話(huà),要處理任何難的字符串皆可迎刃而解,在本章中筆者會(huì)用深入淺出的方式來(lái)介紹regularexpression的用法。
一、Perl 字符匹配的文字處理模式中,/pattern/常用到的語(yǔ)法
/pattern/結(jié)果
除了換行字符\n外,找尋只有一個(gè)字符的字符串
x?找尋0個(gè)或是1個(gè)x字符
x*找尋0個(gè)或是0個(gè)以上的x字符
.*找尋0個(gè)或是0個(gè)以上的任何字符
x+找尋0個(gè)或是1個(gè)以上的x字符
.+找尋1個(gè)或是1個(gè)以上的任何字符
{m}找尋剛好是m個(gè)個(gè)數(shù)指定的字符
{m,n}找尋在m個(gè)數(shù)個(gè)數(shù)以上,n個(gè)個(gè)數(shù)以下指定的字符
{m,}找尋m個(gè)個(gè)數(shù)以上指定的字符
[]找尋符合[]內(nèi)的字符
[^]找尋不符合[]內(nèi)的字符
[0-9]找尋符合0到9的任何一個(gè)字符
[a-z]找尋符合a到z的任何一個(gè)字符
[^0-9]找尋不符合0到9的任何一個(gè)字符
[^a-z]找尋不符合a到z的任何一個(gè)字符
^找尋字符開(kāi)頭的字符
$找尋字符結(jié)尾的字符
\d找尋一個(gè)digit(數(shù)字)的字符,和[0-9]語(yǔ)法一樣
\d+找尋一個(gè)digit(數(shù)字)以上的字符串,和[0-9]+語(yǔ)法一樣
\d找尋一個(gè)non-digit(非數(shù)字)的字符,和[^0-9]語(yǔ)法一樣
\d+找尋一個(gè)non-digit(非數(shù)字)以上的字符,和[^0-9]+語(yǔ)法一樣
\w找尋一個(gè)英文字母或是數(shù)值的字符,和[a-za-z0-9]語(yǔ)法一樣
\w+找尋一個(gè)以上英文字母或是數(shù)值的字符,和[a-za-z0-9]+語(yǔ)法一樣
\w找尋一個(gè)非英文字母,數(shù)值的字符,和[^a-za-z0-9]語(yǔ)法一樣
\w+找尋一個(gè)以上非英文字母,數(shù)值的字符,和[^a-za-z0-9]+語(yǔ)法一樣
\s找尋一個(gè)空白的字符,和[\n\t\r\f]一樣
\s+找尋一個(gè)以上空白的字符,和[\n\t\r\f]+一樣
\s找尋一個(gè)非空白的字符,和[^\n\t\r\f]一樣
\s+找尋一個(gè)以上非空白的字符,和[^\n\t\r\f]+一樣
\b找尋一個(gè)不以英文字母,數(shù)值為邊界的字符串
\b找尋一個(gè)以英文字母,數(shù)值為邊界的字符串
a|b|c找到符合a字符或是b字符或是c字符的字符串
abc找到一個(gè)含有abc的字符串
(pattern)()這個(gè)符號(hào)是會(huì)記憶所找尋到的字符,是一個(gè)很實(shí)用的語(yǔ)法
第一個(gè)()內(nèi)所找到的字符串變成$1這個(gè)變量或是\1變量
第二個(gè)()內(nèi)所找到的字符串變成$2這個(gè)變量或是\2變量
以此類(lèi)推,筆者會(huì)在下一小節(jié)中詳細(xì)介紹它的用法
/pattern/ii這個(gè)參數(shù)是代表忽略英文大小寫(xiě)的意思,也就是在找尋字符串的時(shí)候,不會(huì)去考慮英文的大小寫(xiě)
\如果要在pattern模式中找尋一個(gè)有特殊的意義的字符,要在這個(gè)字符前加上\這個(gè)符號(hào),這樣才會(huì)讓這個(gè)特殊字符失效#p#
二、Perl 字符匹配的文字處理模式(regularexpression)的簡(jiǎn)單范例
看了上一小節(jié)文字處理模(regularexpression)之的,初學(xué)者對(duì)于這個(gè)語(yǔ)法的應(yīng)用可能還不是很清楚,所以筆者會(huì)在這一小節(jié)中,舉出一些在文字處理模式中常用的范例給大家看看:
范例說(shuō)明
/perl/找到含有perl的字符串
/^perl/找到開(kāi)頭是perl的字符串
/perl$/找到結(jié)尾是perl的字符串
/c|g|i/找到含有c或g或i的字符串
/cg{2,4}i/找到c后面跟著2個(gè)到4個(gè)g,再跟著i的字符串
/cg{2,}i/找到c后面跟著2個(gè)以上g,再跟著i的字符串
/cg{2}i/找到c后面跟著2個(gè)g,再跟著i的字符串
/cg*i/找到c后面跟著0個(gè)或多個(gè)g,再跟著i的字符串,如同/cg{0,1}i/
/cg+i/找到c后面跟著一個(gè)以上g,再跟著c的字符串,如同/cg{1,}i/
/cg?i/找到c后面跟著0個(gè)或是一個(gè)g,再跟著c的字符串,如同/cg{0,1}i/
/c.i/找到c后面跟著一個(gè)任意字符,再跟著i的字符串
/c..i/找到c后面跟著二個(gè)任意字符,再跟著i的字符串
/[cgi]/找到符合有這三個(gè)字符任意一個(gè)的字符串
/[^cgi]/找到?jīng)]有這三個(gè)字符中任意一個(gè)的字符串
/\d/找尋符合數(shù)值的字符串
可以使用/\d+/來(lái)表示一個(gè)或是多個(gè)數(shù)值的字符串
/\d/找尋符合不是數(shù)值的字符串
可以使用/\d+/來(lái)表示一個(gè)或是更多個(gè)非數(shù)值的字符串
/\w/找尋符合英文字母,數(shù)值的字符串
可以使用/\w+/來(lái)表示一個(gè)或是更多個(gè)英文字母,數(shù)值的字符串
/\w/找尋符合非英文字母,數(shù)值字符的字符串
可以使用/\w+/來(lái)表示一個(gè)或是更多個(gè)非英文字母,數(shù)值的字符串
/\s/找尋符合空白的字符串
可以使用/\s+/來(lái)表示一個(gè)或是更多個(gè)空白字符的字符串
/\s/找尋符合不是空白的字符串
可以使用/\s+/來(lái)表示一個(gè)或是更多不是空白的字符的字符串
/\*/找尋符合*這個(gè)符號(hào)的字符串,因?yàn)?在文字處理模式中有它的特殊意思,所以要在這個(gè)特殊符號(hào)前加上\這個(gè)符號(hào),這樣才會(huì)讓這個(gè)特殊字符失效
/abc/i找尋符合abc的字符串而且不考慮這些符合字符串的大小寫(xiě)
【編輯推薦】


















