摘要:目前為止,我們前面所用過的精確文本匹配也是一種正則表達式。在中,正則表達式一般由正則字符和一些特殊字符類似于通配符聯合構成的一個文本模式的程序性描述。原子必須是正則表達式的最基本組成單元,而且在每個模式中最少要包含一個原子。
PHP 正則表達式 一、正則表達式簡介
正則表達式是用于描述字符排列和匹配模式的一種語法規則。它主要用于字符串的模式分割、匹配、查找和替換操作。目前為止,我們前面所用過的精確(文本)匹配也是一種正則表達式。
在PHP中,正則表達式一般由正則字符和一些特殊字符(類似于通配符)聯合構成的一個文本模式的程序性描述。
在PHP中,正則表達式有三個作用:1.匹配,常用于從字符串中析取信息 2.用新文本代替匹配文本 3.將一個字符串拆分為一組更小的信息塊
一個正則表達式中至少包含一個原子
二、兩套正則表達式函數庫PCRE庫(推薦):使用preg_為前綴命名的函數;
POSIX庫:使用ereg_為前綴命名的函數
三、PCRE庫函數函數名 描述 ----------------------|-------------------------- preg_match() | 進行正則表達式匹配 preg_match_all() | 進行全局正則表達式匹配 preg_replace() | 執行正則表達式的搜索和替換 preg_split() | 用正則表達式分割字符串 preg_grep() | 返回與模式匹配的數組單元 preg_replace_callback | 用回調函數執行正則表達式的搜索和替換四、使用場景
表單驗證
url_rewrite (url地址重寫)
爬蟲
五、正則表達式的組成部分1.定界符 (必須)
通常使用特殊字符組成,常用“/”。
2.原子(必須)
是正則表達式的最基本組成單元,而且在每個模式中最少要包含一個原子。原子是由所有那些未顯示指定為元字符的打印和非打印字符組成,具體分為5類。
普通字符作為原子:如a~z,A~Z,0~9。
一些特殊字符和轉義后元字符作為原子: " * + ? .等。
一些非打印字符作為原子:如:f n r t v cx。
使用“通用字符類型”作為原子:如:d D w W s S。
自定義原子表([ ])作為原子:如:"/[apj]sp/"。
3.元字符
4.模式修正符
示例:
# 匹配一個字符a $pattern = "/a/"; # 匹配字符a,如果有返回1,沒有返回0,只能匹配一次。 echo preg_match($pattern, "012344556"); # preg_match也可用于判斷 if(preg_match($pattern, "1232423423", $matches)) { echo "匹配到了
"; # 并把匹配出來的字符以數組的形式賦值給$matches; # 打印結果:`array(1) {[0] => string(1) "a"}`; var_dump($matches); }else { echo "沒有匹配"; }
元字符匹配:
# 如果只想匹配 `.`,特殊含義的字符要轉義。 $pattern = "/./" # 匹配非打印字符 $pattern = "/ /" # 匹配0-9數字 $pattern = "/d/"; # 匹配除了0-9的數組 $pattern = "/D/"; # 匹配數字+大小寫字母+下劃線 $pattern = "/w/"; # 匹配除了數字、大小寫字母、下劃線 $pattern = "/W/"; # 匹配空白符(換行、縮進、空格) $pattern = "/s/"; # 匹配除了空白符的字符 $pattern = "/S/"; # `*` 代表匹配前面的原子出現0、1、或多次 $pattern = "so*u"; # `+` 代表匹配前面的原子出現1次、或多次 $pattern = "so+u"; # `?` 匹配前面的一個原子出現0次或者1次 $pattern = "hao?sou"; # 匹配除了換行符的任意字符 $pattern = "/./"; # `|`代表或者 $pattern = "/a|b|c/"; # 匹配前面的一個原子恰巧出現n次; $pattern = "/hao{2}sou/"; # 匹配出現>=2次 $pattern = "/hao{2, }sou/"; # 匹配出現2-5次 $pattern = "/hao{2, 5}sou/"; # `^` 必須以該原子開頭 $pattern = "/^aaa/"; # `$` 必須以該原子結尾 $pattern = "/aaa$/"; # 嚴格模式 # 必須嚴格只能匹配aaa。 $pattern = "/^aaa$/"; # a | b | c $pattern = "/[abc]/"; # 除了a,b,c $pattern = "/[^abc]/"; # `()`可以看做一個整體,還可以做反向引用 # 比如要匹配協議頭為http、https、ftp $pattern = "/(http|https|ftp):///"; # 匹配除了空白符的任意字符 $pattern = "/.*/"; # `.*`貪婪模式 $str = "abcabc"; $pattern = "/.*/"; # `.*?`取消貪婪模式 $pattern = "/.*?/"; 或: $pattern = "/.*/U";
模式修正符:
`i`代表ignore,忽略大小寫 `m`匹配多行 `.`修正.的換行符 `x`忽略正則表達式里面的空白符 `D`取消$對 的忽略
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29427.html
摘要:兼容的正則表達式已經實現了很多使用不同解析引擎的正則函數。中主要有兩個正則解析器一個稱為,另一個稱為兼容正則表達式。在中,每個正則表達式模式都是使用符合格式的字符串。 原文鏈接: Getting Started with PHP Regular Expressions Last-Modified: 2019年5月10日16:23:19譯者注: 本文是面向0正則基礎的phper, 很多...
摘要:正則表達式的都是匹配和替換搜索正則表達式要匹配的字符串匹配到的字符串匹配到的個數,沒有匹配到返回下面是例子執行一個正則表達式匹配,非貪婪執行一個全局正則表達式匹配,貪婪執行結果匹配所有僅由有一個單詞組成的科目名輸出結果替換正則表達式要匹 正則表達式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:正則表達式的都是匹配和替換搜索正則表達式要匹配的字符串匹配到的字符串匹配到的個數,沒有匹配到返回下面是例子執行一個正則表達式匹配,非貪婪執行一個全局正則表達式匹配,貪婪執行結果匹配所有僅由有一個單詞組成的科目名輸出結果替換正則表達式要匹 正則表達式的都是匹配和替換 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...
摘要:在閱讀這篇文章前最好把同系列文章實戰正則表達式一驗證手機號先仔細閱讀一遍。但實際上這樣一個表達式是無法從上面的中提取第一個元素的這里主要的問題是在默認情況下點號字符無法匹配換行符。但是很遺憾,正則表達式中沒有排除型子表達式或者說排除型分組。 這篇文章通過提取html元素介紹了正則表達式中模式修飾符、貪婪匹配與非貪婪匹配、Unicode模式、環視等知識點。在閱讀這篇文章前最好把同系列文章...
閱讀 1877·2021-11-12 10:36
閱讀 2309·2021-09-01 10:29
閱讀 2337·2019-08-30 15:56
閱讀 1015·2019-08-30 12:56
閱讀 2342·2019-08-26 13:58
閱讀 2264·2019-08-23 18:38
閱讀 1486·2019-08-23 18:32
閱讀 2103·2019-08-23 16:53