標籤:
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分鐘入門教程