PHP正則表達式

php正則表達示的定界符

PHP的正則表達示定界符的規定如下:

定界符,不能用a-z A-Z 0-9 ?其他的都可以用。必須成對出現,有開始就有結束。

我們來例幾個例子:

  • /中間寫正則/ 正確
  • %中間寫正則% 正確
  • ^中間寫正則^ 正確
  • @中間寫正則@ 正確
  • (中間寫正則) 錯誤
  • A中間寫正則A 錯誤

原子
原子是正則表達示里面的最小單位,原子說白了就是需要匹配的內容。一個成立的正則表達示當中必須最少要有一個原子。
說明:我們見到的空格、回車、換行、0-9、A-Za-z、中文、標點符號、特殊符號全為原子。

preg_match 函數

int preg_match ( string $正則 , string $字符串 [, array &$結果] )

功能:根據$正則變量,匹配$字符串變量。如果存在則返回匹配的個數,把匹配到的結果放到$結果變量里。如果沒有匹配到結果返回0
結果變量的值是一個數組,沒有匹配到則是一個空數組。

<?php
//定義一個變量叫zz,放正則表達示。為了方便大家記憶,如果你英文比較ok,建議把變量名還是寫成英文的$pattern
$zz = '/a/';$string = 'ddfdjjvi2jfvkwkfi24';if(preg_match($zz, $string, $matches)){echo '匹配到了,結果為:';var_dump($matches);
}else{echo '沒有匹配到';
}?>

特殊標識的原子

原子說明
\d匹配一個0-9
\D除了0-9以外的所有字符
\wa-zA-Z0-9_
\W除了0-9A-Za-z_以外的所有字符
\s匹配所有空白字符\n \t \r 空格
\S匹配所有非空白字符
[ ]指定范圍的原子

我們看看 [] 指定范圍的原子

<?php$zz = '/[0-5]\w+/'; //匹配0-5的任意一個數字和最少一個字符$string = '6a';$string1 = '1C';if(preg_match($zz, $string, $matches)){echo '匹配到了,結果為:';var_dump($matches);
}else{echo '沒有匹配到';
}// $string 匹配失敗// $string1匹配成功?>

[^ 字符] 不匹配指定區間的字符

<?php$zz = '/[^\w]/';    //匹配一個非字符$string = 'aaaaab311dd';$string1 = '!$@!#%$#^##';if(preg_match($zz, $string1, $matches)){echo '匹配到了,結果為:';var_dump($matches);
}else{echo '沒有匹配到';
}// $string 匹配失敗// $string1匹配成功?>
原子等價式
\w[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\d[0-9]
\D[^0-9]
\s[ \t\n\f\r]
\S[^ \t\n\f\r]

php正則表示中的元字符

拋出問題: \d 代表匹配一個字符。而我現在想要匹配十個八個,任意多個數字腫么辦?

這個時候我們就要用到元字符。在使用原子的時候,發現只能夠匹配一個字符,可是要匹配多個字符就出現了問題。
這個時候,我們需要借助元字符來幫我們修飾原子,實現更多的功能。

元字符功能說明
*是代表匹配前面的一個原子,匹配0次或者任意多次前面的字符。
+匹配一次或多前前面的一個字符
?前面的字符可有可無【可選】 有或沒有
.更標準一些應該把點算作原子。匹配除了\n以外的所有字符
|或者。注:它的優先級最低了。
^必須要以抑揚符之后的字符串開始
$必須要以$之前的字符結尾
\b詞邊界
\B非邊界
{m}有且只能出現m次
{n,m}可以出現n到m次
{m,}至少m次,最大次數不限制
()改變優先級或者將某個字符串視為一個整體,匹配到的數據取出來也可以使用它

php 正則達達示中的模式修正符

如果abc在第二行的開始處如何匹配?
我不希望正則表達示特別貪婪的匹配全部,只匹配一部份怎么辦?

常用的模式匹配符有:

|模式匹配符 |功能
|--|--||
|i |模式中的字符將同時匹配大小寫字母.
|m |字符串視為多行
|s |將字符串視為單行,換行符作為普通字符.
|x |將模式中的空白忽略.
|A |強制僅從目標字符串的開頭開始匹配.
|D |模式中的美元元字符僅匹配目標字符串的結尾.
|U |匹配最近的字符串.

m 視為多行

<?php
$pattern = '/^a\d+/m';  //多行匹配開頭a和一個數字
$string = "我的未來在自己手中我需要不斷的努力
a9是一個不錯的字符表示
怎么辦呢,其實需要不斷奮進";
if (preg_match($pattern, $string, $matches)) {echo '匹配到了,結果為:';var_dump($matches);
} else {echo '沒有匹配到';
}// 匹配成功 'a9'
?>

s 識為一行

<?php$pattern = '/新的未來.+\d+/';$string = '新的未來
987654321';if (preg_match($pattern, $string, $matches)) {echo '匹配到了,結果為:';var_dump($matches);
} else {echo '沒有匹配到';
}
//沒有匹配到//-----------------------------------------------------//
$pattern = '/新的未來.+\d+/s';   //后面加了s$string = "新的未來
987654321";if (preg_match($pattern, $string, $matches)) {echo '匹配到了,結果為:';var_dump($matches);
} else {echo '沒有匹配到';
}// 匹配成功 :   "新的未來 987654321"
?>

常用正則函數

函數名功能
preg_filter執行一個正則表達式搜索和替換
preg_grep返回匹配模式的數組條目
preg_match執行一個正則表達式匹配
preg_match_all執行一個全局正則表達式匹配
preg_replace_callback_array傳入數組,執行一個正則表達式搜索和替換使用回調
preg_replace_callback執行一個正則表達式搜索并且使用一個回調進行替換
preg_replace執行一個正則表達式的搜索和替換
preg_split通過一個正則表達式分隔字符串

轉載于:https://www.cnblogs.com/koala0521/p/7251247.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252208.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252208.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252208.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最具戲劇性的分析診斷案例——十分鐘鎖定數據庫性能“元兇”

昨天&#xff0c;正好有點空時間想看看書&#xff0c;結果&#xff0c;剛打開書&#xff0c;沒看幾個字兒&#xff0c;接到用戶電話說&#xff1a;一個庫有問題&#xff0c;希望能幫忙看下。因為我知道他們那邊也有自己的專職DBA&#xff0c;于是問&#xff1a;沒讓人給看看嗎&…

Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!

有時候需要遠程家里的臺式機使用&#xff0c;因為我平時都是用 MAC 多&#xff0c;但是遠程喚醒只能針對局域網&#xff0c;比較麻煩&#xff0c;于是我想用微信實現遠程喚醒機器。 *注意&#xff1a;全文代碼可左右滑動查看 準備工作 本程序主要是實現遠程管理 Windows10操作系…

c#通過app.manifest使程序以管理員身份運行

通常我們使用c#編寫的程序不會彈出這個提示&#xff0c;也就無法以管理員身分運行。微軟的操作系統使用微軟的產品方法當然是有的&#xff0c;通過app.manifest配置可以使程序打開的時候&#xff0c;彈出UAC提示需要得到允許才可以繼續&#xff0c;這樣就獲得了管理員的權限來執…

Oracle 作業

Oracle 作業 dbms_job與 dbms_scheduler 用于安排和管理作業隊列,通過使用作業,可以使ORACLE數據庫定期執行特定的任務。 一. dbms_job 1.1. 創建 variable jobno number; begin dbms_job.submit(:jobno,proce_t;, sysdate, sysdate1/24/60); commit; end; / 1.2. 參數 Job 輸出…

企業級 Spring Boot 教程 (十四)用restTemplate消費服務

構架工程 創建一個springboot工程&#xff0c;去消費RESTFUL的服務。這個服務是 http: ///gturnquist-quoters.cfapps.io/api/random &#xff0c;它會隨機返回Json字符串。 Spring Cloud大型企業分布式微服務云架構源碼請加一七九一七四三三八零 在Spring項目中&#xff0c;它…

MOS管基本認識(快速入門)

1. 三個極的判定G極(gate)—柵極&#xff0c;不用說比較好認 S極(source)—源極&#xff0c;不論是P溝道還是N溝道&#xff0c;兩根線相交的就是 D極(drain)—漏極&#xff0c;不論是P溝道還是N溝道&#xff0c;是單獨引線的那邊2. N溝道與P溝道判別箭頭指向G極的是N溝道 箭頭背…

基礎構建模塊

5 基礎構建模塊 Java平臺類庫包含了豐富的并發基礎構建模塊&#xff0c;例如線程安全的容器類以及各種用于協調多個相互協作的線程控制流的同步工具類(Synchronizer)。本章將介紹其中一些最有用的并發構建模塊。 5.1同步容器類 同步容器類包括Vector和Hashtable&#xff0c;二者…

TCP定時器

1. TCP中7種定時器 TCP中有7中定時器 &#xff08;1&#xff09;建立連接定時器(connection-establishment timer) &#xff08;2&#xff09;重傳定時器(retransmission timer) &#xff08;3&#xff09;延遲應答定時器(delayed ACK timer) &#xff08;4&#xff09;堅持定時…

sql優化大全

1. 優化SQL步驟 1. 通過 show status和應用特點了解各種 SQL的執行頻率 通過 SHOW STATUS 可以提供服務器狀態信息&#xff0c;也可以使用 mysqladmin extende d-status 命令獲得。 SHOW STATUS 可以根據需要顯示 session 級別的統計結果和 global級別的統計結果。 如顯示當前s…

Halcon實現邊緣提取

一、邊緣提取 1、設置ROI興趣區域 2、快速二值化&#xff0c;并連接相鄰區域。 這樣做的目的是進一步減少目標區域&#xff0c;通過二值化將目標區域大概輪廓提取出來 3、提取最接近目標區域的輪廓 常用函數有boundary&#xff0c;gen_contour_region_xld 4、根據自己的需求提取…

軟件工程網絡15個人閱讀作業1 201521123038 游舒婷

軟件工程網絡15個人閱讀作業1 201521123038 游舒婷 1.博客園地址 sakurai3104 2.碼云地址 sakurai3104 3.閱讀與思考 &#xff08;1&#xff09;回想一下你初入大學時對網絡工程專業的暢想 當初你是如何做出選擇網絡工程專業的決定的&#xff1f; 填報志愿的時候&#xff0c;大…

18LaTeX學習系列之---LaTeX的參考文獻

目錄 目錄前言&#xff08;一&#xff09;簡單的參考文獻1.說明2.源代碼3.輸出效果&#xff08;二&#xff09;以文件管理的方式1.說明&#xff1a;2.源代碼&#xff1a;3.輸出效果&#xff08;三&#xff09;直接從源網站獲取1.說明&#xff12;.操作目錄 本系列是有關LaTeX的…

Vue 2.0 v-for 響應式key, index及item.id參數對v-bind:key值造成差異研究

Vue 2.0 v-for 響應式key, index及item.id參數對v-bind:key值造成差異研究 在github上閱覽README.md以獲得最佳閱讀體驗&#xff0c;點這里 v-for響應式key, index及item.id參數對v-bind:key值造成差異研究 實驗背景 通常情況下&#xff0c;我們渲染一個li列表&#xff0c;采用…

halcon edges_sub_pix算子

轉載http://blog.51cto.com/juwen/133003 介紹一下Canny算子&#xff1a; 使用累計直方圖計算兩個閥值。凡是大于高閥值的一定是邊緣&#xff1b; 凡是小于低閥值的一定不是邊緣&#xff1b;如果檢測結果大于低閥值但又小于高閥值&#xff0c;那就要看這個像素的鄰接像素中有…

Python 基礎(常用數據結構)

常用數據結構 1&#xff09;元組 元組是一種靜態的數據結構&#xff0c;無法修改&#xff0c;若要修改只能重新生成新的元組。 輸出結果&#xff1a; 元組元素的獲取是通過索引值去獲得的&#xff1b;例如上面的tup1[0]返回apple&#xff1b;另外你可以直接把tup1一次性賦給多個…

Java IO(二)——RandomAccessFile

一、RandomAccessFile RandomAccessFile類可以說是Java語言中功能最為豐富的文件訪問類&#xff0c;它提供了眾多的文件訪問方法。RandomAccessFile類支持"隨機訪問"方式&#xff0c;可以跳轉到文件的任意位置處讀寫數據。要訪問一個文件的時候&#xff0c;不想把文件…

halcon select_shape_xld按區域大小描繪xld

常用與對xld進行以面積、長、寬進行XLD的選擇操作。 select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : ) XLD&#xff1a;需要選擇的xld SelectedXLD:選擇后的xld Features:面積、長、高等 Operation&#xff1a;and、or等 Min&#xff1a;最小值門…

工業三防手持終端如何選

物聯宇手持終端作為工業級的數據采集器&#xff0c;目前[]()已廣泛應用在物流快遞、生產制造、零售、醫療、公共事業等領域。由于工業環境的復雜性&#xff0c;手持終端在惡劣的環境下作業&#xff0c;在性能、穩定性、電池耐用性上的要求都較高&#xff0c;同時還必須采用一些…

centos7 安裝python3

1.查看是否已經安裝Python CentOS 7.2 默認安裝了python2.7.5 因為一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安裝Python 然后使用命令 which python 查看一下Python可執行文件的位置 可見執行文件在/usr/bin/ 目錄下&#xff0c;切換到該…

centos svn 的搭建

一. SVN 簡介 Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的數據。 這些數據放置在一個中央資料檔案庫(repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。 這樣你就可以把檔案恢復到舊的版本, 或是瀏…