真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php正則表達(dá)式指的是什么

這篇文章主要介紹了php正則表達(dá)式指的是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇php正則表達(dá)式指的是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

創(chuàng)新互聯(lián)主營(yíng)歷下網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),歷下h5小程序定制開(kāi)發(fā)搭建,歷下網(wǎng)站營(yíng)銷(xiāo)推廣歡迎歷下等地區(qū)企業(yè)咨詢(xún)

在php中,正則表達(dá)式是描述字符排列模式的一種自定義語(yǔ)法規(guī)則,自身具有一套非常完整的、可以編寫(xiě)模式的語(yǔ)法體系,提供了一種靈活且直觀的字符串處理方法。正則表達(dá)式描述的是一種字符串匹配模式,可以用來(lái)檢查一個(gè)字符串中是否含有某種子串、將匹配的子串做替換或者從某個(gè)字符串中取出符合某個(gè)條件的子串等等。

什么是正則表達(dá)式

正則表達(dá)式也稱(chēng)為模式表達(dá)式,自身具有一套非常完整的、可以編寫(xiě)模式的語(yǔ)法體系,提供了一種靈活且直觀的字符串處理方法。正則表達(dá)式通過(guò)構(gòu)建具有特定規(guī)則的模式,與輸入的字符串信息比較,在特定的函數(shù)中使用從而實(shí)現(xiàn)字符串的匹配、查找、替換及分割等操作。

舉個(gè)我們?cè)谌粘I钪械睦樱绻胨阉麟娔X某個(gè)目錄下的所有 txt 格式的文件,就可以在該目錄下輸入*.txt,然后按回車(chē)鍵,就可以列出目錄下的所有 txt 格式的文件了。這里使用到的*.txt就可以理解為一個(gè)簡(jiǎn)單的正則表達(dá)式。

下面使用正則表達(dá)式的語(yǔ)法構(gòu)建了兩個(gè)例子,如下所示:

/http(s)?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is      // 匹配網(wǎng)址 URL 的正則表達(dá)式
/^\w{3,}@([a-z]{2,7}|[0-9]{3})\.(com|cn)$/                    // 匹配郵箱地址的正則表達(dá)式

不要被上例中看似亂碼的字符串給嚇退,它們就是按照正則表達(dá)式的語(yǔ)法規(guī)則構(gòu)建的,是一種由普通字符和具有特殊功能的字符組成的字符串。而且要將這些字符串放在特定的正則表達(dá)式函數(shù)中使用才有效果。

正則表達(dá)式的用途

正則表達(dá)式描述的是一種字符串匹配模式,可以用來(lái)檢查一個(gè)字符串中是否含有某種子串、將匹配的子串做替換或者從某個(gè)字符串中取出符合某個(gè)條件的子串等等。例如,當(dāng)用戶(hù)提交一個(gè)表單后,要判斷輸入的電話(huà)號(hào)碼、E-mail 地址等是否有效,用普通的基于字面的字符驗(yàn)證顯然是不夠的。

正則表達(dá)式是由普通字符(例如字符 a 到 z)以及特殊字符(稱(chēng)為“元字符”)組成的文字模式。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。正則表達(dá)式的模式可以是單個(gè)的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。

使用正則表達(dá)式的目的就是可以通過(guò)簡(jiǎn)單的辦法來(lái)實(shí)現(xiàn)強(qiáng)大的功能。為了簡(jiǎn)單、有效而又不失強(qiáng)大,造成了正則表達(dá)式規(guī)則的復(fù)雜,構(gòu)建正確、有效的正則表達(dá)式更是難度較大,所以需要付出一些努力才行。入門(mén)之后通過(guò)一定的參考和大量實(shí)踐,在開(kāi)發(fā)實(shí)踐中使用正則表達(dá)式還是比較有效且有趣的。

正則表達(dá)式中的常用術(shù)語(yǔ)

在學(xué)習(xí)正則表達(dá)式之前,先來(lái)了解一下正則表達(dá)式中幾個(gè)容易混淆的術(shù)語(yǔ),這對(duì)于學(xué)習(xí)正則表達(dá)式有很大的幫助。

1) grep

最初是 ED 編輯器中的一條命令,用來(lái)顯示文件中特定的內(nèi)容。后來(lái)成為一個(gè)獨(dú)立的工具 grep。

2) egrep

grep 雖然不斷地更新升級(jí),但仍然無(wú)法跟上技術(shù)的腳步。為此,貝爾實(shí)驗(yàn)室寫(xiě)出了 egrep,意為“擴(kuò)展的 grep"。這大大增強(qiáng)了正則表達(dá)式的能力。

3) POSIX(Portable Operating System Interface of UNIX)

可移植操作系統(tǒng)接口。在 grep 發(fā)展的同時(shí),其他一些開(kāi)發(fā)人員也根據(jù)自己的喜好開(kāi)發(fā)出了具有獨(dú)特風(fēng)格的版本。但問(wèn)題也隨之而來(lái),有的程序支持某個(gè)元字符,而有的程序則不支持。因此,就有了POSIX。POSIX 是一系列標(biāo)準(zhǔn),確保了操作系統(tǒng)之間的移植性。不過(guò) POSIX 和 SQL 一樣,沒(méi)有成為最終的標(biāo)準(zhǔn)而只能作為一個(gè)參考。

4) Perl(Practical Extraction and Reporting Language)

實(shí)際抽取與匯報(bào)語(yǔ)言。1987 年,Larry Wall 發(fā)布了 Perl。在隨后的 7 年時(shí)間里,從 Perl1 到現(xiàn)在的 Perl5,最終成為了 POSIX 之后的另一個(gè)標(biāo)準(zhǔn)。

5) PCRE

Perl 的成功,讓其他的開(kāi)發(fā)人員在某種程度上要兼容"Perl",包括 C/C++、Java、Python 等都有自己的正則表達(dá)式。1997 年,Philip Hazel 開(kāi)發(fā)了 PCRE 庫(kù),這是兼容 Perl 正則表達(dá)式的一套正則引擎,其他開(kāi)發(fā)人員可以將 PCRE 整合到自己的語(yǔ)言中,為用戶(hù)提供豐富的正則功能。許多軟件都使用 PCRE,PHP 正是其中的一員。

正則表達(dá)式語(yǔ)法規(guī)則

在使用正則表達(dá)式之前我們一定要先來(lái)學(xué)習(xí)正則表達(dá)式的語(yǔ)法。正則表達(dá)式的構(gòu)成元素中一般包括普通字符、元字符、限定符、定位點(diǎn)、非打印字符和指定替換項(xiàng)等。

1) 普通字符

普通字符包括沒(méi)有顯式指定為元字符的所有可打印和不可打印字符,包括所有大小寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和一些符號(hào)。最簡(jiǎn)單的正則表達(dá)式是用于搜索字符串相比較的單個(gè)普通字符。例如,單字符正則表達(dá)式/A/會(huì)始終匹配字母 A。

也可以將多個(gè)單字符組合起來(lái)形成較長(zhǎng)的表達(dá)式,例如,正則表達(dá)式/the/會(huì)匹配搜索字符串中的 the、there、other 和 over the lazy dog 等。無(wú)須使用任何串聯(lián)運(yùn)算符,只需連續(xù)輸入字符即可。

2) 元字符

除普通字符之外,正則表達(dá)式還可以包含“元字符”。元字符可分為單字符元字符和多字符元字符。例如,元字符\d,它與數(shù)字字符相匹配。

下表中列出了所有的單字符元字符。

元字符行為示例
*零次或多次匹配前面的字符或子表達(dá)式,等效于{0,}zo* 與 “z”和“zoo”匹配
+一次或多次匹配前面的字符或子表達(dá)式,等效于{1,}zo+ 與 “zo”和“zoo”匹配,但與“z”不匹配
?零次或一次匹配前面的字符或子表達(dá)式,等效于{0,1}
當(dāng) ? 緊隨任何其他限定符(*、+、?、{n}、{n,} 或 {n,m})之后時(shí),匹配模式是非貪婪的。非貪婪模式匹配搜索到的、盡可能少的字符串,而默認(rèn)的貪婪模式匹配搜索到的、盡可能多的字符串
zo? 與“z”和“zo”匹配,但與“zoo”不匹配
o+? 只與“oooo”中的單個(gè)“o”匹配,而 o+ 與所有“o”匹配
do(es)? 與“do”或“does”中的“do”匹配
^匹配搜索字符串開(kāi)始的位置。如果標(biāo)志中包括 m(多行搜索)字符,^ 還將匹配 \n 或 \r 后面的位置。如果將 ^ 用作括號(hào)表達(dá)式中的第一個(gè)字符,就會(huì)對(duì)字符集取反^\d{3} 與搜索字符串開(kāi)始處的 3 個(gè)字符匹配
[^abc] 與除 a、b、c 以外的任何字符匹配
$匹配搜索字符串結(jié)束的位置。如果標(biāo)志中包括 m(多行搜索)字符,^ 還將匹配 \n 或 \r 前面的位置。\d{3}$ 與搜索字符串結(jié)尾處的 3 個(gè)數(shù)字匹配
.匹配除換行符 \n 之外的任何單個(gè)字符。若要匹配包括 \n 在內(nèi)的任意字符,請(qǐng)使用諸如 [\s\S] 之類(lèi)的模式a.c 與 “abc”“a1c”和“a-c”匹配
[]標(biāo)記括號(hào)表達(dá)式的開(kāi)始和結(jié)尾[1-4] 與“1”、“2”、“3”或“4”匹配
[^aAeEiIoOuU] 與任何非元音字符匹配
{}標(biāo)記限定符表達(dá)式的開(kāi)始和結(jié)尾a{2,3} 與“aa”和“aaa”匹配
()標(biāo)記子表達(dá)式的開(kāi)始和結(jié)尾,可以保存子表達(dá)式,以備將來(lái)之用A(\d) 與“A0”至“A9”匹配。保存該數(shù)字以備將來(lái)之用
|指示兩個(gè)或多個(gè)項(xiàng)之間進(jìn)行選擇z|food 與“z”或“food”匹配
(z|f)ood 與 “zood”或“food”匹配
/表示 JavaScript 中的文本正則表達(dá)式模式的開(kāi)始和結(jié)尾。在第二個(gè) “/”后添加單字符標(biāo)志可以指定搜索行為/abc/gi 是與 “abc”匹配的 JavaScript 文本正則表達(dá)式。g(全局)標(biāo)志指定查找模式的所有匹配項(xiàng),i(忽略大小寫(xiě))標(biāo)志使搜索不區(qū)分大小寫(xiě)
\將下一字符標(biāo)記為特殊字符、文本、反向引用或八進(jìn)制轉(zhuǎn)義符\n 與換行符匹配。\( 與 “(”匹配。\\ 與 “\”匹配

這些特殊字符在括號(hào)表達(dá)式內(nèi)出現(xiàn)時(shí)就會(huì)失去它們的意義,變成普通字符。若要匹配這些特殊字符,必須首先轉(zhuǎn)義字符,即在字符前面加反斜杠\。例如,若要搜索+文本字符,則可使用表達(dá)式\+。

除了以上單字符元字符外,還有一些多字符元字符,如下表所示。

元字符行為示例
\b與一個(gè)字邊界匹配。即字與空格間的位置er\b 與 “never”中的“er”匹配,但與“verb”中的“er”不匹配
\B非邊界字匹配er\B 與“verb”中的“er”匹配,但與“never”中的“er”不匹配
\d數(shù)字字符匹配,等效于[0-9]在搜索字符串“12 345”中,\d{2} 與“12”和“34”匹配。\d 與“1”,“2”、“3”、“4”和“5”匹配
\D非數(shù)字字符匹配,等效于[^0-9]/D+ 與“abc123 def”中的“abc”和“def”匹配
\w與 A-Z、a-z、0-9 和下劃線(xiàn)中的任意任意字符匹配,等效于[A-Za-z0-9]在搜索字符串“The quick brown fox...”中,\w+ 與“The”、“quick”、“brown”和“fox”匹配
\W與除 A-Z、a-z、0-9 和下劃線(xiàn)以外的任意字符匹配,等效于[^A-Za-z0-9]在搜索字符串“The quick brown fox...”中,\W+ 與“...”和所有空格匹配
[xyz]字符集,與任何一個(gè)指定字符匹配[abc] 和 “plain”中的“a”匹配
[^xyz]反向字符集,與未指定的任何字符匹配[^abc] 與“plain”中的“p”、“1”、“i”和“n”匹配
[a-z]字符范圍,匹配指定范圍內(nèi)的任何字符[a-z] 與“a”到“z”范圍內(nèi)的任何小寫(xiě)字母字符匹配
[^a-z]反向字符范圍,與不在指定范圍內(nèi)的任何字符匹配[^a-z] 與不在范圍“a”到“z”內(nèi)的任何字符匹配
{n}正好匹配 n 次,n 是非負(fù)整數(shù)o{2} 與“Bob”中的“o”不匹配,但與“fooood”中的兩個(gè)“o”匹配
{n,}至少匹配 n 次,n 是非負(fù)整數(shù)
* 與 {0,} 相等
+ 與 {1,} 相等
o{2} 與“Bob”中的“o”不匹配,但與“fooood”中的所有“o”匹配
{n,m}匹配至少 n 次,至多 m 次。n 和 m 是非負(fù)整數(shù),其中 n<= m,逗號(hào)和數(shù)字之間不能有空格
? 與 {0,1} 相等
在搜索字符串“1234567”中,\d{1,3} 與“123”、“456”和“7”匹配
(模式)與模式匹配并保存匹配項(xiàng)。可以從由 JavaScript 中的 exec Method 返回的數(shù)組元素中檢索保存的匹配項(xiàng)。若要匹配括號(hào)字符(),請(qǐng)使用“\(”或者“\)”(Chapter|Section) [1-9] 與 “Chapter 5”匹配,保存“Chapter”以備將來(lái)之用
(?:模式)與模式匹配,但不保存匹配項(xiàng),即不會(huì)存儲(chǔ)匹配項(xiàng)以備將來(lái)之用。這對(duì)于用“or”字符(|)組合模式部件的情況很有用industry(?:y|ies) 與 industry|industries 相等
(?=模式)正預(yù)測(cè)先行。找到一個(gè)匹配項(xiàng)后,將在匹配文本之前開(kāi)始搜索下一個(gè)匹配項(xiàng)。不會(huì)保存匹配項(xiàng)以備將來(lái)之用^(?=_.*\d.{4,8}$ 對(duì)密碼應(yīng)用一下限制:
其長(zhǎng)度必須介于 4 到 8 字符之間,并且必須至少包含一個(gè)數(shù)字,在該模式中,*\d 查找后跟有數(shù)字的任意多個(gè)字符。對(duì)于搜索字符串“abc3qr”,與“abc3”匹配。
從該匹配項(xiàng)之前,(而不是之后)開(kāi)始,{4,8} 與包含 4~8 個(gè)字符的字符串匹配,與“abc3qr”匹配。
^ 和 $ 指定搜索字符串的開(kāi)始和結(jié)束位置,將在搜索字符串包含匹配字符之外的任何字符時(shí)阻止匹配
(?!模式)負(fù)預(yù)測(cè)先行。匹配與模式不匹配的搜索字符串。找到一個(gè)匹配項(xiàng)后,將在匹配文本之前開(kāi)始搜索下一個(gè)匹配項(xiàng)。不會(huì)保存匹配項(xiàng)以備將來(lái)之用\b(?!th)/w+\b 與不以“th”開(kāi)頭的單詞匹配在該模式中,\b 與一個(gè)字邊界匹配。對(duì)于搜索字符串“quick”,與第一個(gè)空格匹配。(?!th) 與非“th”字符串匹配與“qu”匹配,從該匹配項(xiàng)開(kāi)始,!w+ 與一個(gè)字匹配,即與“quick”匹配
\cx匹配 x 指示的控制字符。x 的值必須在 A-Z 或 a-z 范圍內(nèi)。如果不是這樣,就假定 c 是文本“c”字符本身\cM 與 Ctrl+M 或一個(gè)回車(chē)符匹配
\xn匹配 n,此處的 n 是一個(gè)十六進(jìn)制轉(zhuǎn)義碼。十六進(jìn)制轉(zhuǎn)義碼必須正好是兩位數(shù)長(zhǎng)。允許在正則表達(dá)式中使用 ASCII 代碼\x41 與“A”匹配、\x41 等效于后跟有“1”的“\x04”(因?yàn)?n 必須正好是兩位數(shù))
\num匹配 num,此處的 num 是一個(gè)正整數(shù)。這是對(duì)以保存的匹配項(xiàng)的引用(.)\1 與兩個(gè)連續(xù)的相同字符匹配
\n標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義碼或反向引用。如果 \n 前面至少有 n 個(gè)捕獲子表達(dá)式,那么 n 是反向引用;否則,如果 n 是八進(jìn)制數(shù)(0-7),那么 n 是八進(jìn)制轉(zhuǎn)義碼(\d)\1 與兩個(gè)連續(xù)的相同數(shù)字匹配
\nm標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義碼或反向引用。如果 \nm 前面至少有 nm 個(gè)捕獲子表達(dá)式,那么 nm 是反向引用。如果 \nm 前面至少有 n 個(gè)捕獲子表達(dá)式,則 n 是反向引用,后面跟有文本 m。如果上述情況都不存在,當(dāng) n 和 m 是八進(jìn)制數(shù)字(0-7)時(shí),\nm 匹配八進(jìn)制轉(zhuǎn)義碼 nm\11 與制表符匹配
\nml當(dāng) n 是八進(jìn)制數(shù)字(0-3)、m 和 1 是八進(jìn)制數(shù)字(0-7)時(shí),匹配八進(jìn)制轉(zhuǎn)義碼 nml\011 與制表符匹配
\un匹配 n,其中 n 是以 4 位十進(jìn)制數(shù)字表示的 Unicode 字符\u00A9 與版權(quán)符號(hào)(??)匹配

3) 非打印字符

非打印字符是由普通字符與轉(zhuǎn)義字符組成,用來(lái)在正則表達(dá)式中匹配特定行為的字符,如換行、換頁(yè)、空白符等。下表列出了非打印字符。

字符匹配等效于
\f換頁(yè)符\x0c 和 \cL
\n換行符\x0a 和 \cJ
\r回車(chē)符\x0d 和 \cM
\s任何空白字符,包括空格、制表符和換頁(yè)符[\f\b\r\t\v]
\S任何非空白字符[^\f\b\r\t\v]
\tTab 字符\x09 和 \cI
\v垂直制表符\x0b 和 \cK

4) 優(yōu)先級(jí)順序

在使用正則表達(dá)式時(shí),需要注意匹配的順序。通常相同優(yōu)先級(jí)是從左到右進(jìn)行運(yùn)算的,不同優(yōu)先級(jí)的運(yùn)算先高后低。各種操作符的匹配順序優(yōu)先級(jí)從高到低,如下表所示。

順序元字符描述
1\轉(zhuǎn)義符
2( )、(?:)、(?=)、[ ]括號(hào)和中括號(hào)
3*、+、{n}、{n,}、{n,m}限定符
4^、$、\ 任何元字符定位點(diǎn)和序列
5|替換

另外,字符具有高于替換運(yùn)算符的優(yōu)先級(jí),例如,允許 "m|food" 匹配 "m" 或 "food"。

替換

正則表達(dá)式中的替換允許對(duì)兩個(gè)或多個(gè)替換選項(xiàng)之間的選擇進(jìn)行分組。實(shí)際上可以在模式中指定兩種匹配模式的或關(guān)系??梢允褂霉艿纜字符指定兩個(gè)或多個(gè)替換選項(xiàng)之間的選擇,稱(chēng)之為“替換”。匹配管道字符任一側(cè)最大的表達(dá)式。

例如:

/Chapter|Section [1-9][0-9]{0,1}/

該正則表達(dá)式匹配的是字符串“Chapter”或者字符串“Section”后跟一個(gè)或兩個(gè)數(shù)字。

如果搜索字符串是“Section 22”,那么該表達(dá)式匹配“Section 22”。但是,如果搜索字符串是“Chapter 22”,那么表達(dá)式匹配單詞“Chapter”,而不是匹配“Chapter 22”。

為了解決這種形式的表達(dá)式可能帶來(lái)的誤導(dǎo),可以使用括號(hào)來(lái)限制替換的范圍,即確保它只應(yīng)用于兩個(gè)單詞“Chapter”和“Section”??梢酝ㄟ^(guò)添加括號(hào)來(lái)使正則表達(dá)式匹配“Chapter 1”或“Section 3”。將以上表達(dá)式改成如下形式:

/(Chapter|Section) [1-9][0-9]{0,1}/

修改后,如果搜索字符串是“Section 22”,那么該表達(dá)式匹配“Section 22”。如果搜索字符串是“Chapter 22”,那么表達(dá)式匹配單詞也會(huì)是“Chapter 22”。

子表達(dá)式

正則表達(dá)式中放置括號(hào)可創(chuàng)建子表達(dá)式,子表達(dá)式允許匹配搜索文本中的模式并將匹配項(xiàng)分成多個(gè)單獨(dú)的子匹配項(xiàng),程序可檢索生成的子匹配項(xiàng)。

例如匹配郵箱賬號(hào)的正則表達(dá)式:

/(\w+)@(\w+)\.(\w+)/

該正則表達(dá)式包含 3 個(gè)子表達(dá)式,3 個(gè)子表達(dá)式分別進(jìn)行匹配并保留匹配結(jié)果,與其他表達(dá)式匹配結(jié)果作為一個(gè)整體顯示出來(lái)。

下面的示例將通用資源指示符(URI)分解為其組件:

/(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/

  • 第一個(gè)括號(hào)子表達(dá)式保存 Web 地址的協(xié)議部分,匹配在冒號(hào)和兩個(gè)正斜杠前面的任何單詞。

  • 第二個(gè)括號(hào)子表達(dá)式保存地址的域地址部分,匹配不包括左斜線(xiàn)/或冒號(hào):字符的任何字符序列。

  • 第三個(gè)括號(hào)子表達(dá)式保存網(wǎng)站端口號(hào)(如果指定了的話(huà)),匹配冒號(hào)后面的零個(gè)或多個(gè)數(shù)字。

  • 第四個(gè)括號(hào)子表達(dá)式保存 Web 地址指定的路徑和/或頁(yè)信息,匹配零個(gè)或多個(gè)數(shù)字字符#或空白字符之外的字符。

如果我們使用這個(gè)正則表達(dá)式匹配字符串“http://msdn.microsoft.com:80/scripting/default.htm”,那么 3 個(gè)子表達(dá)式的匹配結(jié)果分別為 http、msdn.microsoft.com:80、/scripting/default.htm。

反向引用

反向引用用于查找重復(fù)字符組。此外,可使用反向引用來(lái)重新排列輸入字符串中各個(gè)元素的順序和位置,以重新設(shè)置輸入字符串的格式。

可以從正則表達(dá)式和替換字符串中引用子表達(dá)式。每個(gè)子表達(dá)式都由一個(gè)編號(hào)來(lái)標(biāo)識(shí),并稱(chēng)作反向引用。

在正則表達(dá)式中,每個(gè)保存的子匹配項(xiàng)按照它們從左到右出現(xiàn)的順序存儲(chǔ)。用于存儲(chǔ)子匹配項(xiàng)的緩沖區(qū)編號(hào)從 1 開(kāi)始,最多可存儲(chǔ) 99 個(gè)子表達(dá)式。在正則表達(dá)式中,可以使用 \n 來(lái)訪(fǎng)問(wèn)每個(gè)緩沖區(qū),其中 n 標(biāo)識(shí)特定緩沖區(qū)的一位或兩位十進(jìn)制數(shù)字。

反向引用的一個(gè)應(yīng)用是,提供查找文本中兩個(gè)相同單詞的匹配項(xiàng)的能力。以下面的句子為例:

Is is the cost of of gasoline going up up?

該句子包含多個(gè)重復(fù)的單詞。如果能設(shè)計(jì)一種方法定位該句子,而不必查找每個(gè)單詞的重復(fù)出現(xiàn),就會(huì)很有用。

下面的正則表達(dá)式使用單個(gè)子表達(dá)式來(lái)實(shí)現(xiàn)這一點(diǎn):

/\b([a-z]+) \1\b/

在此情況下,子表達(dá)式是括在括號(hào)中的所有內(nèi)容。該子表達(dá)式包括由 [a-z]+ 指定的一個(gè)或多個(gè)字母字符。正則表達(dá)式的第二部分是對(duì)以前保存的子匹配項(xiàng)的引用,即單詞的第二個(gè)匹配項(xiàng)正好由括號(hào)表達(dá)式匹配。\1 用于指定第一個(gè)子匹配項(xiàng)。\b 單詞邊界元字符確保只檢測(cè)單獨(dú)的單詞。否則,諸如“is issued”或“this is”之類(lèi)的詞組將不能正確地被此表達(dá)式識(shí)別。所以,使用表達(dá)式 /\b([a-z]+)\1\b/ 匹配字符串“Is is the cost of of gasoline going up up?”得到的結(jié)果為 is、of、up。

在 PHP 中使用正則表達(dá)式

PHP 有兩套函數(shù)庫(kù)支持的正則表達(dá)式處理操作:

  • 一套是由 PCRE(Perl Compatible Regular Expression)庫(kù)提供、與 Perl 語(yǔ)言兼容的正則表達(dá)式函數(shù),以preg_為函數(shù)的前綴名稱(chēng);

  • 另一套是 POSIX(Portable Operating System Interface)擴(kuò)展語(yǔ)法正則表達(dá)式函數(shù),以ereg_為函數(shù)的前綴。

兩套函數(shù)庫(kù)的功能相似,但是 PCRE 的執(zhí)行效率高于 POSIX,所以我們只介紹 PCRE 函數(shù)庫(kù)。

關(guān)于“php正則表達(dá)式指的是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“php正則表達(dá)式指的是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文標(biāo)題:php正則表達(dá)式指的是什么
網(wǎng)頁(yè)鏈接:http://weahome.cn/article/iesooe.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部