php正則修正符

2021-06-05 19:01:13 字數 2690 閱讀 1450

<?php  

//標記在整個模式之外;

例://$mode="/\bis\b/u",其中u在外面;

//修正符:

i 不區分大小寫的匹配;

//如:"/abc/i"可以與abc或abc或abc等匹配;

//修正符:

m 將字串視為多行,不管是那行都能匹配;

例://模式為:$mode="/abc/m";

//要匹配的字串為:$str="bcefg5e\nabcdfe"

//注意其中\n,換行了;abc換到了下一行;

//$str和$mode仍可以匹配,修正符m使得多行也可匹配;

//修正符:

s 將字串視為單行,換行符作為普通字元;

例://模式為:$mode="/pr.y/";

//要匹配字串為:$str="pr\ny";

//兩者不可匹配; . 是除了換行以外的字元可匹配;

//修改下模式為:$mode="/pr.y/s";

//其中修正符s將\n視為普通字元,即不是換行;

//最後兩者可以匹配;

//修正符:

x 將模式中的空白忽略;

//修正符:

a 強制從目標字串開頭匹配;

例://$mode="/abc/a";

//可以與$str="abcsdfi"匹配,

//不可以與$str2="sdsdabc"匹配;

//因為$str2不是以abc開頭;

//修正符:

d 如果使用$限制結尾字元,則不允許結尾有換行;

例://模式為:$mode="/abc$/";

//可以與最後有換行的$str="adshabc\n"匹配;

//元子符$會忽略最後的換行\n;

//如果模式為:$mode="/abc/d",

//則不能與$str="adshabc\n"匹配,

//修正符d限制其不可有換行;必需以abc結尾;

//修正符:

u 只匹配最近的乙個字串;不重複匹配;

例: 如模式為:

$mode="/a.*c/";

$str="abcabbbcabbbbbc"

;preg_match($

mode,$

str,$

content);

echo

$content

[0]; //輸出:abcabbbcabbbbbc;

//如果$mode="/a.*c/";變成$mode="/a.*c/u

"; // 則只匹配最近乙個字串,輸出:abc;

//修正符:e

配合函式preg_replace()使用,

可以把匹配來的字串當作正規表示式執行;

?>

修正符:

posix相容正則沒有修正符。

perl相容正則中可能使用的修正符(修正符中的空格和換行被忽略,其它字元會導致錯誤):

i(pcre_caseless):

匹配時忽略大小寫。

m(pcre_multiline):

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

s(pcre_dotall):

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

x(pcre_extended):

如 果設定了此修正符,模式中的空白字元除了被轉義的或在字元類中的以外完全被忽略。

a(pcre_anchored):

如 果設定了此修正符,模式被強制為「anchored」,即強制僅從目標字串的開頭開始匹配。

d(pcre_dollar_endonly):

如 果設定了此修正符,模式中的行結束($)僅匹配目標字串的結尾。沒有此選項時,如果最後乙個字元是換行符的話,也會被匹配在裡面。如果設定了 m 修正符則忽略此選項。

s

當乙個模式將被使用若干次時,為加速匹配起見值得先對其進行分析。 如果設定了此修正符則會進行額外的分析。目前,分析乙個模式僅對沒有單一固定起始字元的 non-anchored 模式有用。

u(pcre_ungreedy):

使 「?」的預設匹配成為貪婪狀態的。

x(pcre_extra):

模式中的任何反斜線後面跟上 乙個沒有特殊意義的字母導致乙個錯誤,從而保留此組合以備將來擴充。預設情況下,乙個反斜線後面跟乙個沒有特殊意義的字母被當成該字母本身。

u(pcre_utf8):

模 式字串被當成utf-8。

注意:模式修正符(pattern modifiers)

i     -可同時匹配大小寫字母

m     -將字串視為多行

s     -將字串視為單行,換行符做普通字元看待,使「.」匹配任何字元

x     -模式中的空白忽略不計    

u     -匹配到最近的字串

e     -將替換的字串作為表達使用

PHP正規表示式模式修正符

i pcre caseless 如果設定此修正符,模式中的字元將同時匹配大小寫字母。m pcre multiline 默 認情況下,pcre 將目標字串作為單一的一 行 字元所組成的 甚至其中包含有換行符也是如此 行起始 元字元 僅僅匹配字串的起始,行 結束 元字元 僅僅匹配字串的結束,或者最後乙個...

PHP正規表示式模式修正符

說明 下面列出了當前在 pcre 中可能使用的修正符。括號中是這些修正符的內部 pcre 名。i pcre caseless 如果設定此修正符,模式中的字元將同時匹配大小寫字母。m pcre multiline 默 認情況下,pcre 將目標字串作為單一的一 行 字元所組成的 甚至其中包含有換行符也...

正則匹配 模式修正符 小寫u的有關問題 php

正則匹配 模式修正符 小寫u的問題 php 最近看到一段 str 你好,世界dd preg match all us str,match echocount match 0 上網查了不少資料,但對於php正規表示式中的模式修正符u實在有些不明白,求解啊 分享到 更多 解決方案 u unicode的縮...