php 正則中的 i,m,s,x,e 分別表示什麼

2021-07-05 10:31:37 字數 1125 閱讀 4768

i

如果設定此修正符,模式中的字元將同時匹配大小寫字母。

m當設定了此修正符,「行起始」和「行結束」除了匹配整個字串開頭和結束外,還分別匹配其中的換行符的之後和之前。

s如果設定了此修正符,模式中的圓點元字元(.)匹配所有的字元,包括換行符。沒有此設定的話,則不包括換行符。

x如果設定了此修正符,模式中的空白字元除了被轉義的或在字元類中的以外完全被忽略,在未轉義的字元類之外的 # 以及下乙個換行符之間的所有字元,包括兩頭,也都被忽略。

e如果設定了此修正符,preg_replace() 在替換字串中對逆向引用作正常的替換,

? 在 . + 和 * 之後 表示非貪婪匹配: *、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪婪或最小匹配。

例如:<?php

$string = "上飛機離開我

$su = preg_match("/ \

print_r($match[1]); // 輸出 /uploadfile/2009/0921/20090921091612567.jpg

$su = preg_match("/ \

print_r($match[1]); // 輸出 /uploadfile/2009/0921/20090921091612567.jpg' border='

?>

例子:(?i):

(?i)在php中的意思是內部修正符,i指不區分大小寫

其它的修正符還有x,m,s,u等。和我們使用的模式修正符是一樣的。

區別在於它是在模式內部使用的。僅作用於(?i)所在的子模式內

如ccc(a(?i))bcd 匹配 cccabcd和cccabcd

而a(?i)bc則和abc加上\i修正符是一樣的因為(?i)作用於整個模式

後向引用

對乙個正規表示式模式或部分模式兩邊新增圓括號將導致相關匹配儲存到乙個臨時緩衝區中,所捕獲的每個子匹配都按照在正規表示式模式中從左至右所遇到的內容儲存。儲存子匹配的緩衝區編號從 1 開始,連續編號直至最大 99 個子表示式。每個緩衝區都可以使用 '\n' 訪問,其中 n 為乙個標識特定緩衝區的一位或兩位十進位制數。

可以使用非捕獲元字元 '?:', '?=', or '?!' 來忽略對相關匹配的儲存。



php 正則中的 i,m,s,x,e 分別表示什麼

i 如果設定此修正符,模式中的字元將同時匹配大小寫字母。匹配所有的字元,包括換行符。沒有此設定的話,則不包括換行符。preg replace 在替換字串中對逆向引用作正常的替換,在 和 之後 表示非貪婪匹配 和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪...

php 正則匹配http,php url正規表示式

本文章收集了三種關於從字串或文章內容中匹配url正規表示式的php 前二種函式是獲取以網域名稱為標題的http,後一種是匹配內容中的url位址並且儲存到陣列中哦。方法一 ereg str url hh tt pp ww 0 9a za z 0 9a za z a za z a za z 判斷乙個合法...

nginx location指令中的正規表示式

官網說明 測試所有的字首字串 如果匹配到 後的字串,則使用這個location 如果最長的字首字串前有 標記,則使用這個location 儲存最長字首字串的location 測試正規表示式 如果匹配,則使用這個location 如果沒有匹配,則使用最長字首字串的location。location u...