php正規表示式
什麼叫正規表示式
正規表示式是對字串進行操作的一種邏輯公式,就是用一些特定的字元組合成一個規則字串,稱之為正規匹配模式。
其中字串'/apple/'就是一個正規表示式,他用來匹配來源字串中是否存在apple字串。
PHP中使用PCRE函式庫函數進行正規匹配,例如上例中的preg_match用於執行一個正規匹配,常用來判斷一類字元模式是否存在。
正規表示式的基本語法
PCRE函式庫函數中,正規匹配模式使用分隔符號與元字元組成,分隔符號可以是非數字、非反斜線、非空格的任意字元。常用的分隔符號是正斜線(/)、hash符號(#) 以及取反符號(~),例如:
如果模式中包含分隔符,則分隔符需要使用反斜線()進行轉義。
如果模式中包含較多的分割字符,建議更換其他的字符作為分隔符,也可以採用preg_quote進行轉義。
分隔符後面可以使用模式修飾符,模式修飾符包括:i, m, s, x等,例如使用i修飾符可以忽略大小寫匹配:
元與轉義
正則表達式中具有特殊含義的字符稱之為元字符,常用的元字符有:
一般用於轉義字符^ 斷言目標的開始位置(或在多行模式下是行首)
$ 斷言目標的結束位置(或在多行模式下是行尾)
. 匹配除換行符外的任何字元(預設)
[ 開始字元類別定義
] 結束字元類別定義
| 開始一個可選分支
( 子組的開始標記
) 子組的結束標記
? 作為量詞,表示0 次或1 次匹配。位於量詞後面用來改變量詞的貪婪特性。 (查閱量詞)
* 量詞,0 次或多次匹配
+ 量詞,1 次或多次匹配
{ 自訂量詞開始標記
} 自訂量詞結束標記
元字符具有兩種使用場景,一種是可以在任何地方都能使用,另一種是只能在方括號內使用,在方括號內使用的有:
轉義字符^ 僅在作為第一個字符(方括號內)時,表示字元類別取反
- 標記字元範圍
其中^在反括號外面,表示斷言目標的開始位置,但在方括號內部則代表字元類取反,方括號內的減號-可以標記字元範圍,例如0-9表示0到9之間的所有數字。
貪婪模式與懶惰模式
正則表達式中每個元字符匹配一個字符,當使用+之後將會變的貪婪,它將匹配一個字符,但盡可能多的字符,但盡可能多的字符使用問號?字符時,它將盡可能少的匹配字符,既是懶惰模式。
貪婪模式:在可匹配與可不匹配的時候,優先匹配
懶惰模式:在可匹配與可不匹配的時候,優先匹配
的字元長度的時候,可以使用{}指定匹配字元數
使用正則表達式進行匹配
使用正則表達式的目的是為了實現比函數處理函數更加靈活的處理方式,因此跟字串處理函數一樣,其主要用來判斷子字串是否存在、字串替換、分割字串、取得模式子字串等。
PHP使用PCRE函式庫函數來進行正規處理,透過設定好模式,然後呼叫相關的處理函數來取得匹配結果。
preg_match用來執行一個匹配,可以簡單的用來判斷模式是否匹配成功,或者取得一個匹配結果,他的返回值是匹配成功的次數0或者1,在匹配到1次以後就會停止搜尋.
查找所有匹配结果
preg_match只能匹配一次结果,但很多时候我们需要匹配所有的结果,preg_match_all可以循环获取一个列表的匹配结果数组。
可以使用preg_match_all匹配一个表格中的数据:
Eric | 25 |
John | 26 |
$matches结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。
正则表达式的搜索和替换
正则表达式的搜索与替换在某些方面具有重要用途,比如调整目标字符串的格式,改变目标字符串中匹配字符串的顺序等。
例如我们可以简单的调整字符串的日期格式:
其中${1}与$1的写法是等效的,表示第一个匹配的字串,$2代表第二个匹配的。
通过复杂的模式,我们可以更加精确的替换目标字符串的内容。
用正则替换来去掉多余的空格与字符:
正则匹配常用案例
正则匹配常用在表单验证上,一些字段会有一定的格式要求,比如用户名一般都要求必须是字母、数字或下划线组成,邮箱、电话等也都有自己的规则,因此使用正则表达式可以很好的对这些字段进行验证。
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了php正则表达式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在現今科技快速發展的時代,程式語言也如雨後春筍般湧現。其中一門備受矚目的語言就是Go語言,它以其簡潔、高效、並發安全等特性受到了許多開發者的喜愛。 Go語言以其強大的生態系統而著稱,其中有許多優秀的開源專案。本文將介紹五個精選的Go語言開源項目,帶領讀者一起探索Go語言開源專案的世界。 KubernetesKubernetes是一個開源的容器編排引擎,用於自

《Go語言開發必備:5個熱門框架推薦》Go語言作為一門快速、高效的程式語言,受到越來越多開發者的青睞。為了提高開發效率,優化程式碼結構,許多開發者選擇使用框架來快速建立應用。在Go語言的世界中,有許多優秀的框架可供選擇。本文將介紹5個熱門的Go語言框架,並提供具體的程式碼範例,幫助讀者更好地理解和使用這些框架。 1.GinGin是一個輕量級的Web框架,擁有快速

隨著網路的發展與資訊科技的進步,大數據時代已經來臨,數據分析、機器學習等領域也得到了廣泛的應用。在這些領域中,任務調度是一個不可避免的問題。如何實現高效的任務調度,對於提高效率至關重要。在本篇文章中,將介紹如何使用Golang的Web框架Echo框架實現分散式任務調度。一、介紹Echo框架Echo是一個高效能、可伸縮、輕量級的GoWeb框架。它基於HTT

Laravel是一個流行的PHP框架,具有高度可擴展性和高效性,它提供了許多強大的工具和程式庫,讓開發者可以快速建立高品質的網路應用程式。其中,LaravelEcho和Pusher是兩個非常重要的工具,透過它們可以輕鬆實現WebSockets通信,本文將詳細介紹如何在Laravel應用程式中使用這兩個工具。什麼是WebSockets? WebSockets

PHP中echo關鍵字的作用和使用方法詳解PHP是一種廣泛使用的伺服器端腳本語言,它在網頁開發中被廣泛應用。而echo關鍵字是在PHP中用來輸出內容的一種方法。本文將詳細介紹echo關鍵字的作用與使用方法。作用:echo關鍵字的主要作用是將內容輸出到瀏覽器。在網頁開發中,我們需要將資料動態地呈現到前端頁面上,這時就可以使用echo關鍵字將資料輸出到頁面上。 e

Go語言作為一種快速、高效的程式語言,一直受到程式設計師的青睞。在Go語言的生態系統中,框架扮演著至關重要的角色,幫助開發者更快速地建立應用程式。本文將介紹五個Go語言框架,讓你了解其特點和用法。 1.Gin框架Gin框架是一個輕量級的Web框架,具有快速、高效能的特性。使用Gin框架可以快速建立RESTfulAPI和Web應用程式。以下是一個簡單的範例程式碼:

目前最受歡迎的Go框架有:Gin:輕量級、高效能的Web框架,簡潔易用。 Echo:快速、高度可自訂的網路框架,提供高效能路由和中介軟體。 GorillaMux:快速、靈活的多工器,提供進階路由設定選項。 Fiber:效能最佳化的高效能Web框架,處理高並發請求。 Martini:物件導向設計的模組化網路框架,提供豐富的功能集。

Go語言作為一種高效、現代化的程式語言,廣受開發者的青睞。在Go語言中,存在著許多優秀的框架,這些框架能夠幫助開發者快速建立高效且穩定的應用程式。本文將介紹一些Go語言中熱門的框架,並提供一些具體的程式碼範例。 Gin框架Gin是一個非常受歡迎的Goweb框架,它提供了快速開發API的功能。 Gin框架具有高效能、易用、輕量級等特點,廣泛應用於網路公司的後端開發
