Php中的正則表達式

簡單介紹正則表達式及其作用

Ø 正則表達式的瞭解

正則表達式就是描述字符串排列模式的一種自定義語言規則

如果可以使用字符串處理函數完成的任務,就不要使用正則表達式

有一些複雜性的操作,只能用正則表達式

正則表達式也稱爲一種模式表達式

正則表達式就是通過具有特定規則的模式,在與輸入的字符串信息進行比較、分割、查找、替換等操作

 

Ø 正則表達式的特點

正則表達式也是一個字符串

由具有特殊意義的字符串組成的字符串

具有一定編寫規則,也是一種模式

看做是一種編程語言:是用一些特殊字符,按照規則編寫出來一個字符串,形成一種模式

 

注意:如果正則表達式不和函數一起使用,則就是一個字符串,如果正則表達式放到某個函數中使用,才能發揮正則表達式的真正作用

 

Ø PHP中提供了兩套正則表達式函數庫

 Posix擴展正則表達式 ereg_開頭的函數

 perl兼容正則表達式 preg_開頭的函數

 推薦使用prel 兼容正則表達式函數庫

正則表達式的語法

Ø 正則定界符

Ø 正則表達式中的原子

Ø 正則表達式中的元字符

Ø 正則表達式的模式修正符

 

正則定界符

正則的定界符就是用來聲明正則表達式邊界的符號。

正則表達式常用的邊界符爲 /,實際上任何非數字字母以及反斜線 \ 之外的任意字符都可以做正則表達式的邊界符。

 

注意:一個完整的正則表達式有兩個邊界符

一個是字符串類型的引號邊界符  ''

一個是正則表達式的邊界符 //(一般用/)

整體就是 '//'

 

正則表達式的原子

 組成正則表達式的最小單位就是原子

 

正則的數字字母都是原子,大部分不可見的字符也是原子。

例如:\n\r\t...這些轉譯字符都是元素

 

Ø 正則中原子

 \d 表示 0-9 之間的一個數字

 \D 表示除了0-9之間的任意一個字符

 \s 表示匹配任意一個空白字符包括 \n\r\t..

 \S  表示除了空白符或者轉譯字符之外的任意一個字符

 \w 表示大小寫字符數字以及下劃線當中任意一個字符

 \W 表示除了大小寫字母數字以及下劃線之外的任意一個字符

 

 

正則表達式中的元字符(原子修飾符)

Ø [] 原子列表

    表示在指定的字符中選擇一個原子

  例如:[5-9] 表示5 6 7 8 9連續得字符允許縮寫爲:[開始字符 - 結束字符]

 

Ø [^] 排除列表

例如:[^4 ] 表示除了4之外的任意一個字符都可以

 

Ø 用元字符(原子修飾符)來模擬原子

\d  [0-9]                  \D [^0-9]  

\s [\n\r\t]                 \S[^\n\r\t]

\w[a-zA-Z0-9]       \W[^a-zA-Z0-9]

 

Ø 原子數量修飾符

  表示前面的原子出現0次或者1

 + 表示前面的原子出現1次或者多次

 *  表示前面的原子出現0次或者多次

 

Ø 原子數量修飾列表

n {m,n} 表示前面的原子最小出現m次,最多出現n

n {m,}表示前面的原子最少出現m

n {m} 表示前面的原子能出現m

 

Ø 原子數量修飾列表模擬數量修飾符

 {0,1}

+  {1,} 

*  {0,}

 

Ø 字符串邊界修飾符

 ^ 表示以指定字符開頭的內容

 $ 表示以指定字符結尾的內容

注意:

 ^ $後表示精準修飾限定兩者之間的內容是否一致

如果要使用^$ 可以匹配每一行的開始和結束部分,需要使用模擬修正符 

 

Ø | 選擇修飾符

或與且類似

 

Ø () 模式單元

改變優先級

將多原子視爲一個原子,可以使用原子數量修飾符

將匹配到的括號中的內容暫時存爲內存中

如果使用() 僅僅爲了模擬一個原子使用原子數量修飾符,那麼可以在括號的開始處使用?: 來接觸存於內容的作用,提高效率

可以將括號的內容在函數的輔助下進行反向引用操作

 

Ø 元字符

 .(點)匹配除了\n之外的任意一個字符

 

正則表達式模擬修正符

 

Ø  i 忽略大小寫

Ø  x 忽略正則表達式中得空白

Ø  s 使用.(元字符)可以匹配到\n 

Ø  S 加速匹配

Ø  U 模式  改變貪婪模式

改變貪婪模式,程序默認是貪婪模式,匹配最遠的結束爲止,我們可以在正則中使用*?匹配任意字符的同時使用非貪婪模式

注意:如果此時程序爲貪婪模式,使用U後,則程序變爲非貪婪模式。 如果此時程序爲非貪婪模式,使用U後,程序變爲貪婪模式

正則表達式的函數

Ø preg_grep()  返回與模式匹配的數組單元

@param1:正則表達式

@param2:要匹配的數組

@param3:可選參數 默認爲false。設置爲true表示返回與模式匹配相 反的數組單元

返回值:返回與模式匹配的數組單元

 

Ø preg_match() 進行一次正則匹配 適合做查詢有沒有

@param1 正則表達式

@param2 要匹配的字符串

@param3 可選參數,返回與正則表達式匹配的內容

返回值:成功返回1,失敗返回0   1表示匹配的次數

 

Ø preg_match_all() 進行正則匹配  適合查詢有多少

@param1 正則表達式

@param2 要匹配的字符串

@param3 可選參數,返回與正則表達式匹配的內容

返回值:返回匹配的次數,如果沒有匹配帶則返回0

 

Ø preg_split()  用正則表達式分隔字符串

@param1:正則表達式

@param2 要分隔的字符串

@param3 返回分隔後的數組

 

Ø preg_replace() 執行正則表達式的替換

@param1:要查找正則表達式

@param2:要替換的內容

@param3:在哪裏進行替換操作(數組還是字符串)

返回值:返回替換後的數組或者字符串

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章