PCRE正則表達式


 

正則表達式是一個從左到右匹配目標字符串的模式。大多數字符自身就代表一個匹配 它們自身的模式。

 

1.分隔符:當使用 PCRE 函數的時候,模式需要由分隔符閉合包裹。分隔符可以使任意非字母數字、非反斜線、非空白字符。

經常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~)。下面的例子都是使用合法分隔符的模式。

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

如果分隔符需要在模式內進行匹配,它必須使用反斜線(\)進行轉義。如果分隔符經常在 模式內出現, 一個更好的選擇就是是用其他分隔符來提高可讀性。
/http:\/\//
#http://#

需要將一個字符串放入模式中使用時,可以用 preg_quote() 函數對其進行 轉義,它的第二個參數(可選)可以用於指定需要被轉義的分隔符。

除了上面提到的分隔符,也可以使用括號樣式的分隔符,左括號和右括號分別作為開始和結束 分隔符。

{this is a pattern}

可以在結束分隔符后面增加模式修飾符。 下面的例子是一個大小寫不敏感的匹配:

#[a-z]#i

2.元字符
正則表達式的威力源於它可以在模式中擁有選擇和重復的能力。 一些字符被賦予 特殊的涵義,使其不再單純的代表自己,模式中的這種有特殊涵義的編碼字符 稱為 元字符.

共有兩種不同的元字符:一種是可以在模式中方括號外任何地方使用的,另外一種 是需要在方括號內使用的。

在方括號外使用的元字符如下:

\         一般用於轉義字符
^        斷言目標的開始位置(或在多行模式下是行首)
$       斷言目標的結束位置(或在多行模式下是行尾)
.        匹配除換行符外的任何字符(默認)
[        開始字符類定義
]        結束字符類定義
|        開始一個可選分支
(        子組的開始標記
)        子組的結束標記
?        作為量詞,表示 0 次或 1 次匹配。位於量詞后面用於改變量詞的貪婪特性。 (查閱量詞)
*        量詞,0 次或多次匹配
+        量詞,1 次或多次匹配
{         自定義量詞開始標記
}         自定義量詞結束標記
模式中方括號內的部分稱為“字符類”。 在一個字符類中僅有以下可用元字符:
\          轉義字符
^         僅在作為第一個字符(方括號內)時,表明字符類取反
-          標記字符范圍

3.轉義序列(反斜線)

反斜線有多種用法。首先,如果緊接着是一個非字母數字字符,表明取消 該字符所代表的特殊涵義。這種將反斜線作為轉義字符的用法在字符類 內部和外部都可用。

比如,如果你希望匹配一個 "*" 字符,就需要在模式中寫為 "\*"。 這適用於一個字符在不進行轉義會有特殊含義的情況下。 但是, 對於非數字字母的字符,總是在需要其進行原文匹配的時候在它前面增加一個反斜線, 來聲明它代表自己,這是安全的。如果要匹配一個反斜線,那么在模式中使用 ”\\”。

Note:

反斜線在單引號字符串和雙引號字符串 中都有特殊含義,因此要匹配一個反斜線, 模式中必須寫為 ”\\\\”。 譯注: “/\\/”, 首先它作為字符串,反斜線會進行轉義, 那么轉義后的結果是/\/,這個才是正則表達式引擎拿到的模式, 而正則表達式引擎也認為 \ 是轉義標記,它會將分隔符 / 進行轉義, 從而得到的是一個錯誤,因此,需要 4 個反斜線才可以匹配一個反斜線。

 

4.錨

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM