Php中的Regex

來源:互聯網
上載者:User
這篇文章主要介紹了關於Php中的Regex,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

簡單介紹Regex及其作用

Ø Regex的瞭解

n Regex就是描述字串排列模式的一種自訂語言規則

n 如果可以使用字串處理函數完成的任務,就不要使用Regex

n 有一些複雜性的操作,只能用Regex

n Regex也稱為一種模式運算式

n Regex就是通過具有特定規則的模式,在與輸入的字串資訊進行比較、分割、尋找、替換等操作。

Ø Regex的特點

n Regex也是一個字串

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

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

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

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

Ø PHP中提供了兩套Regex函數庫

Posix擴充Regexereg_開頭的函數

perl相容Regexpreg_開頭的函數

推薦使用prel 相容Regex函數庫

Regex的文法

Ø 正則定界符

Ø Regex中的原子

Ø Regex中的元字元

Ø Regex的模式修正符

正則定界符

正則的定界符就是用來聲明Regex邊界的符號。

Regex常用的邊界符為 /,實際上任何非數字字母以及反斜線\ 之外的任一字元都可以做Regex的邊界符。

注意:一個完整的Regex有兩個邊界符

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

n 一個是Regex的邊界符 //(一般用/)

n 整體就是 '//'

Regex的原子

組成Regex的最小單位就是原子

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

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

Ø 正則中原子

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

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

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

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

\w 表示大小寫字元數字以及底線當中任意一個字元

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

Regex中的元字元(原子修飾符)

Ø [] 原子列表

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

例如:[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,}

Ø 字串邊界修飾符

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

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

注意:

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

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

Ø | 選擇修飾符

n 或與且類似

Ø () 模式單元

n 改變優先順序

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

n 將匹配到的括弧中的內容暫時存為記憶體中

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

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

Ø 元字元

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

Regex類比修正符

Ø i 忽略大小寫

Ø x 忽略Regex中得空白

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

Ø S 加速匹配

Ø U 模式 改變貪婪模式

改變貪婪模式,程式預設是貪婪模式,匹配最遠的結束為止,我們可以在正則中使用*?匹配任一字元的同時使用非貪婪模式

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

Regex的函數

Ø preg_grep() 返回與模式比對的數組單元

@param1:Regex

@param2:要匹配的數組

@param3:選擇性參數預設為false。設定為true表示返回與模式比對相反的數組單元

傳回值:返回與模式比對的數組單元

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

@param1:Regex

@param2:要匹配的字串

@param3:選擇性參數,返回與Regex匹配的內容

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

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

@param1:Regex

@param2:要匹配的字串

@param3:選擇性參數,返回與Regex匹配的內容

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

Ø preg_split() 用Regex分隔字串

@param1:Regex

@param2:要分隔的字串

@param3:返回分隔後的數組

Ø preg_replace() 執行Regex的替換

@param1:要尋找Regex

@param2:要替換的內容

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.