国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

正則表達(dá)式&字符串處理

Original 2016-10-21 13:38:26 890
abstract:程序原理:處理數(shù)據(jù)(Web上的數(shù)據(jù))數(shù)據(jù):類(lèi)型 字符串是程序中的一種最基本的類(lèi)型 serialize正則就是處理字符串的一種方式 處理字符串:查找、替換、刪除、匹配、分割   1、正則表達(dá)式簡(jiǎn)介 正則表達(dá)式介紹正則表達(dá)式:Regular Expression,是用于描述字符排列模式的一種語(yǔ)法規(guī)則。正則表達(dá)式是查找和替換、切割字符串模式的簡(jiǎn)潔和靈活的

程序原理:處理數(shù)據(jù)(Web上的數(shù)據(jù))

數(shù)據(jù):類(lèi)型 字符串是程序中的一種最基本的類(lèi)型 serialize

正則就是處理字符串的一種方式

 

處理字符串:查找、替換、刪除、匹配、分割

   1、正則表達(dá)式簡(jiǎn)介

 

正則表達(dá)式介紹

正則表達(dá)式:Regular Expression,是用于描述字符排列模式的一種語(yǔ)法規(guī)則。

正則表達(dá)式是查找和替換、切割字符串模式的簡(jiǎn)潔和靈活的表示方法。

 

正則表達(dá)式的用途:

在unix(linux)系統(tǒng)中,可以在編輯器中使用正則表達(dá)式實(shí)現(xiàn)對(duì)字符的搜索及處理;各種編程語(yǔ)言(c/c++,perl,java,javascript)也可以使用正則表達(dá)式實(shí)現(xiàn)對(duì)字符的模式分割、匹配、查找及替換操作。

正則表達(dá)式早期僅用于Unix系統(tǒng)程序,現(xiàn)在已被絕大多數(shù)系統(tǒng)、程序所支持。

 

PHP支持兩種風(fēng)格的正則表達(dá)式函數(shù):一種是由PCRE(Perl Compatible Regular Expression)庫(kù)提供的;另一種是由POSIX(Portable Operation System Implementation for unix,UNIX可移植操作系統(tǒng)實(shí)現(xiàn)接口)擴(kuò)展庫(kù)提供的。前者使用以“preg_”為前綴命名的函數(shù);后者使用以“ereg_”為前綴命名的函數(shù)。兩者功能相似,只是執(zhí)行效率略有差異。PERL庫(kù)的函數(shù)(preg_)執(zhí)行效率略高。

ereg_*相關(guān)函數(shù)在php6中將不被支持(從PHP5.3.0開(kāi)始已經(jīng)刪除),不推薦使用。

 

正則語(yǔ)法  記憶、理解

PHP函數(shù)

 

  2、正則表達(dá)式的語(yǔ)法規(guī)則

正則表達(dá)式描述了一種字符串的排列模式,主要用于字符串的模式分割、匹配、查找及替換等操作。正則表達(dá)式是主要由原子(普通字符,如單個(gè)英文字符、數(shù)字、特殊字符等)、元字符(有特殊功用的字符)以及模式修正字符組成。一個(gè)正則表達(dá)式中至少包含一個(gè)原子。他們各自功能和含義有所不同,下面將分別講述正則表達(dá)式的組成元素及其語(yǔ)法規(guī)則。

    $content = preg_split('/<div.+page-break-after.+div>/i',$content);原子:通常是最基本一個(gè)字符。

元字符:特殊字符,比如^,$。

模式修正字符:i,m等。9.php

模式修正符: 
模式修正符是標(biāo)記在整個(gè)模式之外的. 

i :模式中的字符將同時(shí)匹配大小寫(xiě)字母. 
m :字符串視為多行. 
s :將字符串視為單行,換行符作為普通字符. 
x :將模式中的空白忽略. 
A :強(qiáng)制僅從目標(biāo)字符串的開(kāi)頭開(kāi)始匹配. 
D :模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾. 
U :匹配最近的字符串.

 


2.1普通轉(zhuǎn)義字符

普通轉(zhuǎn)義字符是一種原子。正則表達(dá)式所使用的普通轉(zhuǎn)義字符見(jiàn)下表:

1.png

參考1.php

 

2.2 字符類(lèi)(字符集)和范圍:

任何包含在方括號(hào)[]中的內(nèi)容都是一個(gè)字符類(lèi)——一個(gè)被匹配字符所屬的字符集合。"[]"中存放一組原子,彼此地位平等,且僅匹配其中的一個(gè)原子。

例:

[abc]表示匹配a或b或c中的一個(gè)

[a-z]表示所有a到z之間的字符中的一個(gè)

[A-Z]匹配所有大寫(xiě)字母中的一個(gè)

[a-zA-Z]表示任何的大小寫(xiě)字母中的一個(gè)

 [^a-z]匹配任何不在a到z之間的字符(^表示否)

[0-9]匹配所有的數(shù)字 \d

[0-9.-]匹配所有的數(shù)字,點(diǎn)號(hào)和減號(hào)

注意:

a.[]中的內(nèi)容只表示一個(gè)字符。被匹配的文本中只要有[]中的任何一個(gè)字符,就匹配成功。

b.當(dāng)把^放在方括號(hào)里面第一個(gè)位置時(shí),表示否;如果^在方括號(hào)中的其他位置,表示是一個(gè)字符^。當(dāng)^在[]中的第一個(gè)位置時(shí),如果要匹配它本身,要用\轉(zhuǎn)義。當(dāng)該符號(hào)用在方括號(hào)外面時(shí),一般表示正則表達(dá)式的開(kāi)始。

c.當(dāng)-不在a和z,A和Z,0和9之間,單獨(dú)出現(xiàn)時(shí),表示是一個(gè)字符-。

d.在[]中的特殊符號(hào),不用轉(zhuǎn)義。但是幾個(gè)特殊字符除外:] 要轉(zhuǎn)義,^在第一個(gè)位置要轉(zhuǎn)義,反斜杠\,-要轉(zhuǎn)義。三個(gè)反斜杠\代表一個(gè)\(4個(gè)也代表一個(gè)反斜杠)。

 

參考2.php

var_dump(preg_match_all('/[^a^\]]/', '33]3anba',$t));  //非a非]

2.3 重復(fù)匹配

重復(fù)

* 表示這個(gè)模式可以被重復(fù)0次,1次或多次 a{0,}

+ 表示這個(gè)模式可以被重復(fù)1次或多次 a{1,}

? 表示這個(gè)模式可以被重復(fù)0次或1次 a{0,1}

 

計(jì)數(shù)

{5}    表示匹配5次

{2,}   表示至少匹配2次  

{0,5}  表示至多匹配5次(不能寫(xiě)成{,5})

{2,5}  表示最少匹配2次,最多匹配5次

注:,后面不能有空格

 

參考3.php

 

2.4 開(kāi)始或結(jié)尾

^ (或\A)用于正則表達(dá)式的開(kāi)始

$ (或\Z)用于正則表達(dá)式的結(jié)尾

例:

^andy      表示在字符串開(kāi)始處是 andy

.cn$          表示在字符串結(jié)尾處是 .cn

^[a-z]$    表示只包含a到z之間一個(gè)字符的字符串。

參考 4.php

 

\B相當(dāng)于\w ?

 

元字符“\b”對(duì)單詞(指\w)的邊界進(jìn)行匹配;“\B”對(duì)單詞的內(nèi)部進(jìn)行匹配。

例如:在字符串“This island is a beautiful land”中使用/\bis\b/可以匹配單詞“is”,而與“This”或者“island”無(wú)關(guān)。/\bis/與單詞左邊界匹配,可以匹配單詞“is”和“island”中的“is”;/\Bis/不與單詞左邊界匹配,可以匹配單詞 “This”中的“is”。/\Bis\B/ 將明確的指示不與單詞的左、右邊界匹配,只匹配單詞的內(nèi)部。所以在這個(gè)例子中沒(méi)有匹配結(jié)果。

參考 5.php

 

2.5 元字符“.”

元字符“.”匹配除換行符外任何一個(gè)字符,相當(dāng)于[^\n](Unix系統(tǒng))或[^\r\n](Windows系統(tǒng))。不是html的換行<br />。例如:/pr.y/可以匹配目字符串“prey”、“pray”或“pr%y”等。

通常,可以使用“.*”組合來(lái)匹配除換行符外的任何字符串。在一些書(shū)籍中也稱(chēng)其為“全匹配符”或“單含匹配符”。例如:/a.*z/ 表示可以匹配以字母“a”開(kāi)頭,字母“z”結(jié)束的任意不包括換行符的字符串?!? +”也可以完成類(lèi)似的匹配功能,所不同的是其至少匹配一個(gè)字符。例如:/a.+z/將不匹配字符串“az”。

參考 6.php

 

2.6 選擇符

元字符“|”又稱(chēng)模式選擇符(或)。在正則表達(dá)式中匹配兩個(gè)或更多的選擇之一。例如:在字符串“There are many apples and pears.”中,/apple|pear/在第一次運(yùn)行時(shí)匹配“apple”;再次運(yùn)行時(shí)匹配“pear”。也可以繼續(xù)增加選項(xiàng),如/apple|pear|banana|lemon/。

com|cn|net表示匹配com、cn或net

參考7.php

 

2.7 子表達(dá)式(又稱(chēng)原子、模式單元或組)

元字符“()”將其中的正則表達(dá)式變?yōu)樵樱ɑ蚍Q(chēng)模式單元)使用。與數(shù)學(xué)表達(dá)式中的括號(hào)類(lèi)似,“()”可以作為一個(gè)單元被單獨(dú)使用。

 

例如:/(Dog)+/匹配的“Dog”、“DogDog”、“DogDogDog”……,因?yàn)榫o接著“+”前的原子是用元字符“()”括起來(lái)的字符串“Dog”。

 

參考7-2.php  7-3.php

 

2.8 匹配特殊字符

特殊字符有一般加\,如要匹配$ ,則使用 \$

一些特殊字符:\ ^ $ . | ( ) * + ? { }  -

% , \ * " ' | \s \t < > & ~

注意:在PHP中,一般將正則表達(dá)式模式包括在一個(gè)單引號(hào)字符串中。使用雙


Release Notes

Popular Entries