欧美AV无码一区二区,麻豆+无码+国产在线+观看,欧美狂躁少妇XXXX高潮无码,美女扒开屁股让男人桶免费观看,极品粉嫩国产18尤物在线播放

轉義序列(反斜線(xiàn))

反斜線(xiàn)有多種用法。首先,如果緊接著(zhù)是一個(gè)非字母數字字符,表明取消 該字符所代表的特殊涵義。這種將反斜線(xiàn)作為轉義字符的用法在字符類(lèi) 內部和外部都可用。

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

注意:

反斜線(xiàn)在單引號和雙引號 PHP 字符串 中都有特殊含義。因此要匹配一個(gè)反斜線(xiàn) \,正則表達式寫(xiě)法是 \\, 然后 PHP 代碼中需要轉義寫(xiě)成 "\\\\" 或 '\\\\'。

如果一個(gè)模式被使用 PCRE_EXTENDED 選項編譯, 模式中的空白字符(除了字符類(lèi)中的)和未轉義的#到行末的所有字符都會(huì )被忽略。 要在這種情況下使用空白字符或者#,就需要對其進(jìn)行轉義。

反斜線(xiàn)的第二種用途提供了一種對非打印字符進(jìn)行可見(jiàn)編碼的控制手段。 除了二進(jìn)制的 0 會(huì )終結一個(gè)模式外,并不會(huì )嚴格的限制非打印字符(自身)的出現, 但是當一個(gè)模式以文本編輯器的方式編輯準備的時(shí)候, 使用下面的轉義序列相比使用二進(jìn)制字符會(huì )更加容易:

\a
響鈴字符(十六進(jìn)制 07)
\cx
"control-x",x 是任意字符
\e
轉義 (十六進(jìn)制 1B)
\f
換頁(yè) (十六進(jìn)制 0C)
\n
換行 (十六進(jìn)制 0A)
\p{xx}
一個(gè)符合 xx 屬性的字符,詳細查看unicode properties 屬性
\P{xx}
一個(gè)不符合x(chóng)x屬性的字符,詳細查看unicode properties 屬性
\r
回車(chē) (十六進(jìn)制 0D)
\R
換行符:能匹配 \n、\r、\r\n
\t
水平制表符 tab (十六進(jìn)制 09)
\xhh
hh 十六進(jìn)制編碼的字符
\ddd
ddd八進(jìn)制編碼的字符,或者后向引用

\cx的確切效果如下: 如果x是一個(gè)小寫(xiě)字母,它被轉換為大寫(xiě)。接著(zhù), 將字符的第6位(十六進(jìn)制 40,右數第一個(gè)位為第0位)取反。 比如\cz成為十六進(jìn)制的1A,\c{成為十六進(jìn)制3B, \c;成為十六進(jìn)制7B。

在”\x”后面,讀取兩個(gè)十六進(jìn)制數(字母可以是大寫(xiě)或小寫(xiě))。 在UTF-8模式, “\x{…}”允許使用, 花括號內的內容是十六進(jìn)制有效數字。 它將給出的十六進(jìn)制數字解釋為 UTF-8 字符代碼。原來(lái)的十六進(jìn)制轉義序列, \xhh, 匹配一個(gè)雙字節的UTF-8字符,如果它的值大于127

在”\0”之后, 讀取兩個(gè)八進(jìn)制數。所有情況下,如果數少于2個(gè),則直接使用。 序列 ”\0\x\07” 指定了兩個(gè)二進(jìn)制 0 緊跟著(zhù)一個(gè) BEL 字符。 請確保初始的 0 之后的兩個(gè)數字是合法的八進(jìn)制數。

處理一個(gè)反斜線(xiàn)緊跟著(zhù)的不是0的數字的情況比較復雜。在字符類(lèi)外部, PCRE 讀取它并以十進(jìn)制讀取緊隨其后的數字。 如果數值小于 10, 或者之前捕獲到了該數字能夠代表的左括號(子組), 整個(gè)數字序列被認為是后向引用。后向引用如何工作在后面描述, 接下來(lái)就會(huì )討論括號子組。

在一個(gè)字符類(lèi)里面,或者十進(jìn)制數大于 9 并且沒(méi)有那么多的子組被捕獲, PCRE 重新讀取反斜線(xiàn)后的第三個(gè) 8 進(jìn)制數字,并且從最低的 8 位生成單字節值。 任何的后續數字都代表它們自身。例如:

\040
空格的另外一種用法
\40
當提供了少于40個(gè)子組時(shí)也認為是空格。
\7
始終是后向引用
\11
可能是后向引用,也可能是制表符
\011
總是一個(gè)制表符
\0113
一個(gè)制表符緊跟著(zhù)一個(gè)3(因為每次最多只讀取3個(gè)8進(jìn)制位
\113
八進(jìn)制113代表的字符(since there can be no more than 99 back references)
\377
8進(jìn)制377是10進(jìn)制255, 因此代表一個(gè)全1的字符
\81
一個(gè)后向引用或者一個(gè)二進(jìn)制 0 緊跟著(zhù)兩個(gè)數字 8 和 1(因為8不是8進(jìn)制有效數字)

注意,八進(jìn)制值的 100 或者更大的值必須沒(méi)有前置的0引導, 因為每次最多讀取3個(gè)8進(jìn)制位.

所有序列定義的單字節值都可以在字符類(lèi)內部或外部使用。另外,在字符類(lèi)中, 序列 ”\b” 解釋為退格字符(hex 08)。 字符類(lèi)外它又有不同的意義(下面有描述)。

反斜線(xiàn)的第三種用法是用來(lái)描述特定的字符類(lèi):

\d
任意十進(jìn)制數字
\D
任意非十進(jìn)制數字
\h
任意水平空白字符
\H
任意非水平空白字符
\s
任意空白字符
\S
任意非空白字符
\v
任意垂直空白字符
\V
任意非垂直空白字符
\w
任意單詞字符
\W
任意非單詞字符

上面每一對轉義序列都代表了完整字符集中兩個(gè)不相交的部分, 任意字符一定會(huì )匹配其中一個(gè),同時(shí)一定不會(huì )匹配另外一個(gè)。

"空白字符"(whitespace)是 HT (9)、LF (10)、FF (12)、CR (13)、space (32)。 然而,若發(fā)生了本地化匹配,在代碼點(diǎn) 128-255 范圍內亦可能出現空白字符, 比如說(shuō) NBSP (A0)。

單詞字符指的是任意字母、數字、下劃線(xiàn)。 也就是說(shuō)任意可以組成perl單詞的字符。 字母和數字的定義通過(guò)PCRE字符表控制,可以通過(guò)指定地域設置使其匹配改變。比如, 在法國 (fr) 本地化設置中,一些超過(guò) 128 的字符代碼被用于重音字母, 它們可以實(shí)用 \w 匹配。

這些字符類(lèi)序列在字符類(lèi)內部或外部都可以出現。 他們每次匹配所代表的字符類(lèi)型中的一個(gè)字符。 如果當前匹配點(diǎn)位于目標字符串末尾, 它們中的所有字符都匹配失敗, 因為沒(méi)有字符讓它們匹配了。

反斜線(xiàn)的第四種用法是一些簡(jiǎn)單的斷言。 一個(gè)斷言指定一個(gè)必須在特定位置匹配的條件, 它們不會(huì )從目標字符串中消耗任何字符。 接下來(lái)我們會(huì )討論使用子組的更加復雜的斷言。 反斜線(xiàn)斷言包括:

\b
單詞邊界
\B
非單詞邊界
\A
目標的開(kāi)始位置(獨立于多行模式)
\Z
目標的結束位置或結束處的換行符(獨立于多行模式)
\z
目標的結束位置(獨立于多行模式)
\G
在目標中首次匹配位置

這些斷言不能出現在字符類(lèi)中(但是注意, “\b”在字符類(lèi)中有不同的意義, 表示的是退格(backspace)字符)

一個(gè)單詞邊界表示的是在目標字符串中, 當前字符和前一個(gè)字符不同時(shí)匹配\w\W(一個(gè)匹配\w, 一個(gè)匹配\W), 或者作為字符串開(kāi)始或結尾字符的時(shí)候當前字符匹配\w。

\A, \Z, \z斷言不同于傳統的^$(詳見(jiàn) ), 因為他們永遠匹配目標字符串的開(kāi)始和結尾,而不會(huì )受模式修飾符的限制。 它們不受PCRE_MULTILINE,PCRE_DOLLAR_ENDONLY選項的影響。 \Z\z 之間的不同在于當字符串結束字符時(shí)換行符時(shí) \Z 會(huì )將其看做字符串結尾匹配, 而 \z 只匹配字符串結尾。

\G 斷言在指定了offset 參數的preg_match() 調用中, 僅在當前匹配位置在匹配開(kāi)始點(diǎn)的時(shí)候才是成功的。 當 offset 的值不為 0 的時(shí)候, 它與 \A 是不同的。 譯注:另外一點(diǎn)與 \A 的不同之處在于使用 preg_match_all() 時(shí), 每次匹配 \G 只是斷言是否是匹配結果的開(kāi)始位置, 而 \A 斷言的則是匹配結果的開(kāi)始位置是否在目標字符串開(kāi)始位置。

\Q\E 可以用于在模式中忽略正則表達式元字符。比如: \w+\Q.$.\E$ 會(huì )匹配一個(gè)或多個(gè)單詞字符,緊接著(zhù) .$., 最后錨向字符串末尾。

\K 可以用于重置匹配。 比如, foot\Kbar 匹配”footbar”。 但是得到的匹配結果是 ”bar”。但是, \K 的使用不會(huì )干預到子組內的內容, 比如 (foot)\Kbar 匹配 ”footbar”,第一個(gè)子組內的結果仍然會(huì )是 ”foo”。譯注: \K 放在子組和子組外面的效果是一樣的。

欧美AV无码一区二区,麻豆+无码+国产在线+观看,欧美狂躁少妇XXXX高潮无码,美女扒开屁股让男人桶免费观看,极品粉嫩国产18尤物在线播放