麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

PHP中正則表達(dá)式模式修飾符詳解

2024-09-04 11:47:18
字體:
供稿:網(wǎng)友

修飾符是php中正則表達(dá)式的一個(gè)重要的參考,下面我來給大家轉(zhuǎn)一篇關(guān)于PHP中正則表達(dá)式模式修飾符詳解,有需要了解的朋友可進(jìn)入?yún)⒖紖⒖?

PHP模式修飾符又叫模式修正符,是在正則表達(dá)式的定界符之外使用.主要用來調(diào)整正則表達(dá)式的解釋,提擴(kuò)展了正則表達(dá)式在匹配、替換等操作的某些功能,增強(qiáng)了正則的能力.但是有很多地方的解釋都是錯(cuò)誤的,也容易誤導(dǎo)別人,所以今天我把這個(gè)文檔整理出來,供大家參考.

模式修正符號(hào) 功能描述

i 在和正則匹配是不區(qū)分大小寫 

m 將字符串視為多行.默認(rèn)的正則開始“^”和結(jié)束“$”將目標(biāo)字條串作為一單一的一“行”字符(甚至其中包括換行符也是如此).如果在修飾符中加上“m”,那么開始和結(jié)束將會(huì)指點(diǎn)字符串的每一行的開頭就是“^”結(jié)束就是“$”. 

s 如果設(shè)定了這個(gè)修正符,那么,被匹配的字符串將視為一行來看,包括換行符,換行符將被視為普通字符串. 

x 忽略空白,除非進(jìn)行轉(zhuǎn)義的不被忽略. 

e只用在preg_replace()函數(shù)中,在替換字符串中逆向引用做正常的替換,將其作為PHP代碼求值,并用其結(jié)果來替換所搜索的字符串. 

A 如果使用這個(gè)修飾符,那么表達(dá)式必須是匹配的字符串中的開頭部分.比如說”/a/A”匹配”abcd”.

D 模式中的$字符權(quán)匹配目標(biāo)字符的結(jié)尾.沒有此選項(xiàng)時(shí),如果最后一個(gè)字符是換行符的話,美元符號(hào)也會(huì)匹配此字符之前.如果設(shè)定了修正符m則忽略此項(xiàng). 

E 與”m”相反,如果使用這個(gè)修飾符,那么”$”將匹配絕對(duì)字符串的結(jié)尾,而不是換行符前面,默認(rèn)就打開了這個(gè)模式. 

U 貪婪模式,和問號(hào)的作用差不多,最大限度的匹配就是貪婪模式.

貪婪模式:

比如我們要匹配以字母“a”開頭字母“b”結(jié)尾的字符串,但是需要匹配的字符串在“a”后面含有很多個(gè)“b”,比如“a bbbbbbbbbbbbbbbbb”,那正則表達(dá)式是會(huì)匹配第一個(gè)“b”還是最后一個(gè)“b”呢?如果你使用了貪婪模式,那么會(huì)匹配到最后一個(gè)“b”,反之只是匹配到第一個(gè)“b”.

PHP正則表達(dá)式貪婪模式使用實(shí)例:

1./a.+?b/   

2./a.+b/U 

對(duì)比不使用貪婪模式的實(shí)例如下:

1./a.+b/  

上面使用了一個(gè)修飾符U,詳見關(guān)于修飾符的介紹.

其他資料:

模式修正符: 解說正則表達(dá)式模式中使用的修正符

說明:下面列出了當(dāng)前在 PCRE 中可能使用的修正符.括號(hào)中是這些修正符的內(nèi)部 PCRE 名.修正符中的空格和換行被忽略,其它字符會(huì)導(dǎo)致錯(cuò)誤.

i (PCRE_CASELESS)

如果設(shè)定此修正符,模式中的字符將同時(shí)匹配大小寫字母.

m(PCRE_MULTILINE)

默認(rèn)情況下,PCRE 將目標(biāo)字符串作為單一的一“行”字符所組成的(甚至其中包含有換行符也是如此).“行起始”元字符(^)僅僅匹配字符串的起始,“行結(jié)束”元字符($)僅 僅匹配字符串的結(jié)束,或者最后一個(gè)字符是換行符時(shí)其前面(除非設(shè)定了 D 修正符).這和 Perl 是一樣的.

當(dāng)設(shè)定了此修正符,“行起始”和“行結(jié)束”除了匹配整個(gè)字符串開頭和結(jié)束外,還分別匹配其中的換行符的之后和之前.這和 Perl 的 /m 修正符是等效的.如果目標(biāo)字符串中沒有“n”字符或者模式中沒有 ^ 或 $,則設(shè)定此修正符沒有任何效果.

s(PCRE_DOTALL)

如果設(shè)定了此修正符,模式中的圓點(diǎn)元字符(.)匹配所有的字符,包括換行符.沒有此設(shè)定的話,則不包括換行符.這和 Perl 的 /s 修正符是等效的.排除字符類例如 [^a] 總是匹配換行符的,無論是否設(shè)定了此修正符.

x(PCRE_EXTENDED)

如果設(shè)定了此修正符,模式中的空白字符除了被轉(zhuǎn)義的或在字符類中的以外完全被忽略,在未轉(zhuǎn)義的字符類之外的 # 以及下一個(gè)換行符之間的所有字符,包括兩頭,也都被忽略.這和 Perl 的 /x 修正符是等效的,使得可以在復(fù)雜的模式中加入注釋.然而注意,這僅適用于數(shù)據(jù)字符.空白字符可能永遠(yuǎn)不會(huì)出現(xiàn)于模式中的特殊字符序列,例如引入條件子模式 的序列 (?( 中間.

e

如果設(shè)定了此修正符,preg_replace() 在替換字符串中對(duì)逆向引用作正常的替換,將其作為 PHP 代碼求值,并用其結(jié)果來替換所搜索的字符串.只有 preg_replace() 使用此修正符,其它 PCRE 函數(shù)將忽略之.

注: 本修正符在 PHP3 中不可用.

A(PCRE_ANCHORED)

如果設(shè)定了此修正符,模式被強(qiáng)制為“anchored”,即強(qiáng)制僅從目標(biāo)字符串的開頭開始匹配.此效果也可以通過適當(dāng)?shù)哪J奖旧韥韺?shí)現(xiàn)(在 Perl 中實(shí)現(xiàn)的唯一方法).

D(PCRE_DOLLAR_ENDONLY)

如果設(shè)定了此修正符,模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾.沒有此選項(xiàng)時(shí),如果最后一個(gè)字符是換行符的話,美元符號(hào)也會(huì)匹配此字符之前(但不會(huì)匹配任何其它換行符之前).如果設(shè)定了 m 修正符則忽略此選項(xiàng).Perl 中沒有與其等價(jià)的修正符.

S

當(dāng)一個(gè)模式將被使用若干次時(shí),為加速匹配起見值得先對(duì)其進(jìn)行分析.如果設(shè)定了此修正符則會(huì)進(jìn)行額外的分析.目前,分析一個(gè)模式僅對(duì)沒有單一固定起始字符的 non-anchored 模式有用.

U(PCRE_UNGREEDY)

本修正符反轉(zhuǎn)了匹配數(shù)量的值使其不是默認(rèn)的重復(fù),而變成在后面跟上“?”才變得重復(fù).這和 Perl 不兼容.也可以通過在模式之中設(shè)定 (?U) 修正符或者在數(shù)量符之后跟一個(gè)問號(hào)(如 .*?)來啟用此選項(xiàng).

X(PCRE_EXTRA)

此修正符啟用了一個(gè) PCRE 中與 Perl 不兼容的額外功能.模式中的任何反斜線后面跟上一個(gè)沒有特殊意義的字母導(dǎo)致一個(gè)錯(cuò)誤,從而保留此組合以備將來擴(kuò)充.默認(rèn)情況下,和 Perl 一樣,一個(gè)反斜線后面跟一個(gè)沒有特殊意義的字母被當(dāng)成該字母本身.當(dāng)前沒有其它特性受此修正符控制.

u(PCRE_UTF8)

此修正符啟用了一個(gè) PCRE 中與 Perl 不兼容的額外功能.模式字符串被當(dāng)成 UTF-8.本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用.自 PHP 4.3.5 起開始檢查模式的 UTF-8 合法性.

PHP正則表達(dá)式的基本語法:

一個(gè)正則表達(dá)式,分為三個(gè)部分:分隔符,表達(dá)式和修飾符.

分隔符可以是除了特殊字符以外的任何字符(比如"/ !"等等),常用的分隔符是"/".表達(dá)式由一些特殊字符(特殊字符詳見下面)和非特殊的字符串組成,比如"[a-z0-9_-]+@[a-z0-9_-.]+"可以匹配一個(gè)簡單的電子郵件字符串.修飾符是用來開啟或者關(guān)閉某種功能/模式.下面就是一個(gè)完整的正則表達(dá)式的例子:

/hello.+?hello/is  上面的正則表達(dá)式"/"就是分隔符,兩個(gè)"/"之間的就是表達(dá)式,第二個(gè)"/"后面的字符串"is"就是修飾符.

在表達(dá)式中如果含有分隔符,那么就需要使用轉(zhuǎn)義符號(hào)"",比如"/hello.+?/hello/is".轉(zhuǎn)義符號(hào)除了用于分隔符外還可以執(zhí)行特殊字符,全部由字母構(gòu)成的特殊字符都需要""來轉(zhuǎn)義,比如"d"代表全體數(shù)字.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费一级片观看 | avav在线播放 | 亚洲无线看 | 91丝袜| 精品亚洲免费 | 久久久精品网 | 亚洲成人福利网站 | 国产1区在线观看 | 欧美特黄a | 九九热视频这里只有精品 | 国产妞干网 | 国产成人av在线 | 精品一区二区三区免费视频 | 女人一级一级毛片 | 国产免费一区二区三区在线能观看 | 欧美黄色一级片视频 | 国产免费一区二区三区网站免费 | 欧美一级特黄a | 欧洲黄视频 | 中文字幕www. | 91精品国产刺激国语对白 | 特色一级黄色片 | 午夜精品视频免费观看 | 黄色一级片在线观看 | 欧美一级电影网站 | 蜜桃网在线观看 | 国产在线一级视频 | 天天草夜夜爽 | 国产精品一区久久久久 | 视频一区二区久久 | 成人av一二三区 | 国产1区2区在线 | 高清成人在线 | 国产在线欧美日韩 | 在线亚洲欧美 | 圆产精品久久久久久久久久久 | 一区二区三区黄色 | 免费小毛片 | 成人精品aaaa网站 | 久久99国产伦子精品免费 | lutube成人福利在线观看污 |