在php中有兩套正規表示式函式庫。一套是由pcre(perl compatible regular expression)庫提供的。pcre庫使用和perl相同的語法規則實現了正規表示式的模式匹配,其使用以「preg_」為字首命名的函式。另一套是由posix(portable operation system inte***ce)擴充套件庫提供的。posix擴充套件的正規表示式由posix 1003.2定義,一般使用以「ereg_」為字首命名的函式。
兩套函式庫的功能相似,執行效率稍有不同。一般而言,實現相同的功能,使用pcre庫的效率略佔優勢。下面詳細介紹其使用方法。
1.preg_match()函式原型:int preg_match (string pa
tter
n,st
ring
pattern,stringcontent [, array $matches])
preg_match ()函式在co
nten
t字串
中搜尋與
content字串中搜尋與pattern給出的正規表示式相匹配的內容。如果提供了ma
tche
s,則將
匹配結果
放入其中
。 matches,則將匹配結果放入其中。matches[0]將包含與整個模式匹配的文字,$matches[1]將包含第乙個捕獲的與括號中的模式單元所匹配的內容,以此類推。該函式只 作一次匹配,最終返回0或1的匹配結果數。
2.ereg()和eregi()ereg()是posix擴充套件庫中正規表示式的匹配函式。eregi()是ereg()函式的忽略大小寫的版 本。二者與preg_match的功能類似,但函式返回的是乙個布林值,表明匹配成功與否。需要說明的是,posix擴充套件庫函式的第乙個引數接受的是正則 表示式字串,即不需要使用分界符。
3.preg_grep()函式原型:array preg_grep (string pa
tter
n,ar
ray pattern,arrayinput)
preg_grep()函式返回乙個陣列,其中包括了in
put數
組中與給
定的input陣列中與給定的pattern模式相匹配的單元。對於輸入陣列$input中的每個元素,preg_grep()也只進行一次匹配。**6.3給出的示例簡單地說明了preg_grep()函式的使用。
1.preg_match_all()與preg_match()函式類似。如果使用了第三個引數,將把所有可能的匹配結果放入。本函式返回整個模 式匹配的次數(可能為0),如果出錯返回false。
2.多行匹配
僅僅使用posix下的正則表式函式,很難進行複雜的匹配操作。例如,對整個檔案(尤其是多行文字)進行匹配查詢。使用ereg()對此進行操作的乙個方法是分行處理。
1.ereg_replace()和eregi_replace() 函式原型:string ereg_replace (string pa
tter
n,st
ring
pattern,stringreplacement, string $string)
string eregi_replace (string pa
tter
n,st
ring
pattern,stringreplacement, string $string)
ereg_replace()在st
ring
中搜尋模
式字串
string中搜尋模式字串pattern,並將所匹配結果替換 為re
plac
emen
t。當 replacement。當pattern中包含模式單元(或子模式)時,re
plac
emen
t中形如
「\1」或
「 replacement中形如「\1」或「1」的位置將依次被這些子 模式所匹配的內容替換。而「\0」或「$0」是指整個的匹配字串的內容。需要注意的是,在雙引號中反斜線作為轉義符使用,所以必須使用「\\0」,「 \\1」的形式。
eregi_replace()和ereg_replace()的功能一致,只是前者忽略大小寫。
2.preg_replace()函式原型:mixed preg_replace (mixed pa
tter
n,mi
xed pattern,mixedreplacement, mixed su
bjec
t[,i
ntsubject[,intlimit])
preg_replace較ereg_replace的功能更加強大。其前三個引數均可以使用陣列;第四個引數$limit可以設定替換的次數,預設為全部替換。
1.split()和spliti()函式原型:array split (string pa
tter
n,st
ring
pattern,stringstring [, int $limit])
本函式返回乙個字串陣列,每個單元為st
ring
經正則表
達式string經正規表示式pattern作為邊界分割出的子串。如 果設定了li
mit,
則返回的
陣列最多
包含limit,則返回的陣列最多包含limit個單元。而其中最後乙個單元包含了$string中剩餘的所有部分。spliti是split的 忽略大小版本。
2.preg_split()本函式與split函式功能一致。
Python中有關正規表示式
今天學習了python中有關正規表示式的知識。關於正規表示式的語法,不作過多解釋,網上有許多學習的資料。這裡主要介紹python中常用的正規表示式處理函式。re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handsom...
正規表示式有關的函式
函式查詢 實力應用 量詞語法描述 匹配任何至少包含乙個前導字串 匹配任何包含零個或多個前導字串 匹配任何包含零個或乙個前導字串 匹配任意字串 匹配任何包含x 個前導字串 匹配任何包含x 到y 個前導字串 匹配任何包含至少x 個前導字串 匹配字串的行尾 匹配字串的行首 匹配字串的左邊或者右邊 包圍乙個...
PHP正規表示式函式
關於正規表示式 regular expression 似乎譯成 字串解析處理,較合乎字面上的意義。但目前所有的相關書籍都譯成正規表示式或是正規表示法.等等,實際上是負責字串解析比對,並對字串做相關的處理。ereg 字串比對解析。ereg replace 字串比對解析並取代。eregi 字串比對解析,...