PHPRegex30分鐘入門教程

來源:互聯網
上載者:User

標籤:

Regex30分鐘入門教程

 

 

三個常用的知識點:

1、惰性匹配:正則引擎預設是貪婪的,若要最少重複的話,需要用到惰性匹配符 “?”

懶惰限定符

代碼/文法

說明

*? 重複任意次,但儘可能少重複
+? 重複1次或更多次,但儘可能少重複
?? 重複0次或1次,但儘可能少重複
{n,m}? 重複n到m次,但儘可能少重複
{n,}? 重複n次以上,但儘可能少重複

 

參考:http://deerchao.net/tutorials/regex/regex.htm#greedyandlazy

 

2、不捕獲性匹配: 一方面不佔用反嚮應用組號,另一方面提高了匹配效率

(?:exp)        // 匹配exp,不捕獲匹配的文本,也不給此分組分配組號

 

參考:http://deerchao.net/tutorials/regex/regex.htm#backreference

 

3、PHPRegex模式修飾符詳解

模式修正符號 功能描述
i 忽略大小寫】在和正則匹配是不區分大小寫
m

多行模式

說法1:啟用的話,^和$將匹配行的開始於結束;不啟用的話,^和$將匹配整個字串的開始於結束;

 

說法2:將字串視為多行。預設的正則開始“^”和結束“$”將目標字條串作為一單一的一“行”字元(甚至其中包括分行符號也是如此)。如果在修飾符中加上“m”,那麼開始和結束將會指點字串的每一行的開頭就是“^”結束就是“$”。

s

單行模式

說法1:句點(.)可以匹配任一字元,包括分行符號(\n);

 

說法2:如果設定了這個修正符,那麼,被匹配的字串將視為一行來看,包括分行符號,分行符號將被視為一般字元串。

x

忽略空白

說法1:啟用的話,將會忽略Regex中的空白字元(空格,換行等),並且會忽略(#注釋)格式的內聯注釋。在次模式下,任然可以使用\s等元字元來匹配空白字元。

 

說法2:忽略空白,除非進行轉義的不被忽略。

e

只用在preg_replace()函數中,在替換字串中逆向引用做正常的替換,將其(即“替換字串”)作為PHP代碼求值,並用其結果來替換所搜尋的字串。

 

注意:這個參數不推薦使用了,相關文章如下:

PHP函數preg_replace() 正則替換所有合格字串

用preg_replace_callback 代替 preg_replace

A 如果使用這個修飾符,那麼運算式必須是匹配的字串中的開頭部分。比如說”/a/A”匹配”abcd”。
D 模式中的$字元權匹配目標字元的結尾。沒有此選項時,如果最後一個字元是分行符號的話,貨幣符號也會匹配此字元之前。如果設定了修正符m則忽略此項。
E 與”m”相反,如果使用這個修飾符,那麼”$”將匹配絕對字串的結尾,而不是分行符號前面,預設就開啟了這個模式。
U 貪婪模式,和問號的作用差不多,最大限度的匹配就是貪婪模式。
 

 

 

 

 

常用的元字元
代碼 說明
. 匹配除分行符號(\r\n,\r,\n)以外的任一字元
\w 匹配字母或數字或底線或漢字
\s 匹配任意的空白符,包括空格、定位字元(Tab)、分行符號、中文全形空格等
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
 

 

PHPRegex30分鐘入門教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.