摘要:元字符指在正則表達式中有特殊含義的字符包括定界符定位符限定符轉義符選擇符等。其中是非捕獲元字符之一,還有兩個非捕獲元字符是和正向預查,在任何匹配的字符串開始處匹配查找字符串。
定義
是一組描述字符串特征的字符作用
用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等語法
使用斜杠作為定界符,如 /[-a-z]/。正則表達式分為普通字符和元字符,普通字符分為打印字符和非打印字符,打印字符包括字母字符、數字、標點及一些其他符號,非打印字符指打印到紙張上后不可見的字符,包括空格符、回車符、制表符、垂直制表符、換行符、換頁符等。元字符指在正則表達式中有特殊含義的字符包括定界符、定位符、限定符、轉義符、選擇符等。
限定符用來限定元素出現的次數,有 ? + * {n} {n,} {n,m} 共6種。限定符的默認模式是貪婪模式,貪婪模式會盡可能多的匹配字符,在它們的后面加上一個?就會變成非貪婪模式,非貪婪模式會盡可能少的匹配字符,如
$subject="< a1>expressions< a1>"; $pattern="/<.*>/"; $res=preg_match_all($pattern, $subject,$matches); echo $matches[0][0];//結果為 < a1>expressions< a1> $res=preg_match_all("/<.*?>/", $subject,$matches); echo $matches[0][0];//結果為 < a1>定位符
用來描述字符串或單詞的邊界,也就是指單詞和空格間的位置,^和$分別指字符串的開始與結束,描述單詞的前或后邊界,B表示非單詞邊界。不能對定位符使用限定符。例如, "er" 可以匹配"a never aa" 中的 "er",但不能匹配 "a verb" 中的 "er"。"erB" 能匹配 "verb" 中的 "er",但不能匹配 "never" 中的 "er"。
選擇符圓括號用來使被括起來的部分最為一個整體存在,可以用限定符修飾,如 (aa)* ,同時被括起來的部分也會成為一個子表達式被緩存起來用于后面的引用,如 (aa)b1可以匹配 aabaa或aabaac,另外引用時最大只能到99,意思就是緩沖區最多只能放99個子表達式,如果不需要進行引用則可以用?:禁用緩存,如 "industr(?:y|ies) 就是一個比 "industry|industries" 更簡略的表達式 。其中?:是非捕獲元字符之一,還有兩個非捕獲元字符是?=和?!
(?=pattern) 正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,"Windows (?=95|98|NT|2000)" 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始;
(?!pattern) 負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如"Windows (?!95|98|NT|2000)" 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始
由高到低依次為 轉義符、圓括號和方括號、限定符、定位符和普通字符、"或"操作符,如,普通字符具有高于替換運算符的優先級,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",請使用括號創建子表達式,即"(m|f)ood"
PHP中和正則表達式相關的函數preg_quote - 轉義正則表達式字符
preg_match — 執行正則表達式
preg_match_all - 執行一個全局正則表達式
preg_replace - 執行一個正則表達式并替換匹配內容
preg_?filter 等價于preg_replace() 除了它僅僅返回(可能經過轉化)與目標匹配的結果
preg_replace_callback - 執行一個正則表達式搜索并且使用一個回調進行替換
preg_replace_callback_array - 執行一個正則表達式搜索并且使用一個回調進行替換
preg_split - 通過一個正則表達式分隔字符串
preg_last_error - 返回最后一個PCRE正則執行產生的錯誤代碼
preg_?grep 返回給定數組input中與模式pattern匹配的元素組成的數組
strpos - 僅檢查某個字符串是否包含另外一個字符串
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28454.html
摘要:正則表達式一直是里比較難以掌握的點。在中創建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結下,希望...
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
閱讀 2910·2021-10-27 14:19
閱讀 540·2021-10-18 13:29
閱讀 1134·2021-07-29 13:56
閱讀 3553·2019-08-30 13:19
閱讀 1933·2019-08-29 12:50
閱讀 1056·2019-08-23 18:16
閱讀 3525·2019-08-22 15:37
閱讀 1903·2019-08-22 15:37