Q. 正規表示式
正則表達式是由原子,元字符,模式修正三部分組成的。原子也就是普通字元。
元字元:
d: 符合任一個十進位數字[0-9]
s:符合任一空白字元
w:符合任意一個數字、字母、底線[0-9a-zA-Z_]
.:匹配除了換行符自外的任意一個字符
?:匹配0次或一次
+:匹配1次或多次其前的原子
*:匹配任意次
|:匹配兩個或多個分支選擇,用來分隔多選一的模式
b:匹配單字的邊界
B:非單字邊界
^:匹配輸入字串的起始位置
$:匹配輸入字串的結束位置
():模式單元,將多個原子組成大的原子,當做一個單元。這樣會將相關匹配儲存到一個快取區中,可以被取得以供以後使用。儲存子匹配的緩衝區編號從1開始,最大到99,每個緩衝區都可以使用n來存取。在正規表示式模式中使用時注意轉義。舉個例子:”/^d{4}(W)d{2}1d{2}$/」。可以在括號中使用?:s設定非儲存模式。
正則表達式引擎的內部工作機制
知道正則表達式引擎是如何工作的有助於你很快理解為何某個正則表達式不像你期望的那樣工作。
<code> 有两种类型的引擎:文本导向(text-directed)的引擎和正则导向(regex-directed)的引擎。Jeffrey Friedl把他们称作DFA和NFA引擎。本文谈到的是正则导向的引擎。这是因为一些非常有用的特性,如“惰性”量词(lazy quantifiers)和反向引用(backreferences),只能在正则导向的引擎中实现。所以毫不意外这种引擎是目前最流行的引擎。 </code>
你可以輕易分辨出所使用的引擎是文字導向還是正規導向。如果反向引用或「惰性」量詞被實現,則可以肯定你使用的引擎是正規導向的。你可以作以下檢定:將正規表示式
以上就介紹了php-preg-1,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。