php中的正則表達式




1、定位字符

定位字符是正則表達式中又一類很是重要的字符,它的主要做用是用於對字符在匹配對象中的位置進行描述。 git

^:表示匹配的模式出如今匹配對象的開頭(和在"[]"裏面不一樣) 正則表達式

$:表示匹配的模式出如今匹配對象的末尾 數組

空格:表示匹配的模式出如今開始和結尾的兩個邊界之一 ide

"/^he/":能夠匹配以"he"字符開頭的字符串,好比helloheight等等; 函數

"/he$/":能夠匹配以"he"字符結尾的字符串即she等; spa

"/ he/":空格開頭,和^的做用同樣,匹配以he開頭的字符串; 對象

"/he /":空格結束,和$的做用同樣,匹配以he結尾的字符串; 字符串

"/^he$/":表示只和字符串"he"匹配 input

 

2、特殊字符 string

元字符是正則表達式中一類有特殊意義的字符,用來描述其前導字符(即元字符前面的字符)在被匹配的對象中出現的方式。元字符自己是一個個單一的字符,可是不一樣或者相同的元字符組合起來能夠構成大的元字符。

元字符:

{}:大括號用來精確指定匹配元字符出現的次數。

/a{1,3}/   表示字符a能夠出現13

+"+"字符用來匹配元字符前的字符出現一次或者屢次。

/a+/       表示a能夠出現一次或者屢次

*"*"字符用來匹配元字符前的字符出現零次或者屢次。

/a*/       表示字符a能夠出現0到屢次

?"?"字符用來匹配元字符前的字符出現零次或者1次。它還有一個很是重要的做用,即"貪婪模式"

/a?/       表示字符a能夠出現01

.:用於匹配除換行符以外的全部字符,若是通過修飾符"s"的修飾,"."能夠表明任意字符。

|:表示在多個範圍選擇

 

中括號

正賊表達式中使用[]來表示匹配的範圍。

[a-z]:表示能夠出現az26個小寫字母

[a-z]{1,3}:表示出現13個小寫字母

 

PHP正則表達式給出了幾種"[]"的默認值:

 [:alpha:]:匹配任何字母

[:alnum:]:匹配任何字母和數字

[:digit:]:匹配任何數字

[:space:]:匹配空格符

[:upper:]:匹配任何大寫字母

[:lower:]:匹配任何小寫字母

[:punct:]:匹配任何標點符號

[:xdigit:]:匹配任何16進制數字

 

轉義符號

    下面這些特殊字符在轉義符號""轉義後表明的含義以下:

s:匹配單個的空格符

S:用於匹配除單個空格符以外的全部字符。

d:用於匹配從09的數字,至關於"/[0-9]/"

w:用於匹配字母,數字或下劃線字符,至關於"/[a-zA-Z0-9_]/"

W:用於匹配全部與w不匹配的字符,至關於"/[^a-zA-Z0-9_]/"

D:用於匹配任何非10進制的數字字符。

 

 

圓括號

  PHP正則表達式容許使用()將表達式組合成一個總體。

  ^([a-z0-9]{3,6}):以3-6個小寫字母或數字開頭。

 

3、貪婪模式

好比咱們要匹配以字母"a"開頭字母"b"結尾的字符串,可是須要匹配的字符串在"a"後面含有不少個"b",好比"a bbbbbbbbbbbbbbbbb",那正則表達式是會匹配第一個"b"仍是最後一個"b"呢?若是你使用了貪婪模式,那麼會匹配到最後一個"b",反之只是匹配到第一個"b"

使用貪婪模式的表達式以下:

/a.+?b/

/a.+b/U

不使用貪婪模式的以下:

/a.+b/

 

4、修飾符

在正則表達式裏面的修飾符能夠改變正則的不少特性,使得正則表達式更加適合你的須要(注意:修飾符對於大小寫是敏感的,這意味着"e"並不等於"E")。正則表達式裏面的修飾符以下:

i :若是在修飾符中加上"i",則正則將會取消大小寫敏感性,即"a""A" 是同樣的。

m:默認的正則開始"^"和結束"$"只是對於正則字符串若是在修飾符中加上"m",那麼開始和結束將會指字符串的每一行:每一行的開頭就是"^",結尾就是"$"

s:若是在修飾符中加入"s",那麼默認的"."表明除了換行符之外的任何字符將會變成任意字符,也就是包括換行符!

x:若是加上該修飾符,表達式中的空白字符將會被忽略,除非它已經被轉義。

e:本修飾符僅僅對於replacement有用,表明在replacement中做爲PHP代碼。

A:若是使用這個修飾符,那麼表達式必須是匹配的字符串中的開頭部分。好比說"/a/A"匹配"abcd"

E:與"m"相反,若是使用這個修飾符,那麼"$"將匹配絕對字符串的結尾,而不是換行符前面,默認就打開了這個模式。

U:和問號的做用差很少,用於設置"貪婪模式"

 

 

5、正則表達式函數

PHPPerl兼容正則表達式提供的多個函數,分爲模式匹配,替換和匹配數目等等:

1preg_match

函數格式:int preg_match(string pattern, string subject, array [matches]);

這個函數會在string中使用pattern表達式來匹配,若是給定了[regs],就會將string記錄到[regs][0]中,[regs][1]表明使用括號"()"記錄下來的第一個字符串,[regs][2]表明記錄下來的第二個字符串,以此類推。preg若是在string中找到了匹配的pattern,就會返回"true",不然返回"false"

 

2preg_replace

函數格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

這個函數會使用將string中符合表達式pattern的字符串所有替換爲表達式replacement。若是replacement中須要包含pattern的部分字符,則能夠使用"()"來記錄,在replacement中只是須要用"/1"來讀取。

 

3preg_split

函數格式:array preg_split(string pattern, string subject, int [limit]);

這個函數和函數split同樣,區別僅在與split能夠使用簡單正則表達式來分割匹配的字符串,而preg_split使用徹底的Perl兼容正則表達式。第三個參數limit表明容許返回多少個符合條件的值。

 

4preg_grep

函數格式:array preg_grep(string patern , array input);

這個函數和preg_match功能基本上,不過preg_grep能夠將給定的數組input中的全部元素匹配,返回一個新的數組。

相關文章
相關標籤/搜索