定義:正規表示式描述了一類字串的特徵,通過這個特徵與特定的函式配合,對其它的字串進行匹配、查詢、替換及分割操作! 這類字串的特徵是由乙個或多個。
我們一般習慣使用正斜線"/"作為定界的字元
當然除了字母、數字、和反斜線以外的字元都可以作為定界符,比如#!
{}|都是可以的!
定界符放在正規表示式的起始位置,前後一致!
字串的一些字元,比如:a-z、a-z、0-9、雙引號、單引號,它們沒有特殊的含義。
記住一些常用的就行了。
\d 匹配任意乙個十進位制數字,等價於[0-9]
\d 匹配任意乙個除十進位制數字以外字元,等價於[^0-9]
\s 匹配任意乙個空白字元,比如換頁符、換行符、回車符、製表符、垂直製表符
\s 匹配除空白字元以外的任何乙個字元
\w 匹配任意乙個數字或字母或下劃線
\w 匹配除數字、字母、下劃線以外的任意乙個字元
. 匹配除換行符以外的任意乙個字元
* 匹配0次、或1次、或多次其前面的字元
+ 匹配1次或多次其前面的字元
? 匹配0次或1次其前面的字元
表示其前面字元恰好出現n次
表示其前面字元出現不少於n次
表示其前面的字元至少出現n次,最多出現m次
^或\a 匹配字串開始位置
$或者\z 匹配字串的結束位置
| 匹配兩個或多個模式
匹配方括號中的任意乙個字元
[^] 匹配除方括號中字元以外的任意乙個字元
() 將括號中作為乙個整體以便將其中的內容獲取到
在我們的正規表示式中 可以使用圓括號來將某一段括起來,在圓括號的後面部分,我們可以使用
\\ 數字 來代表圓括號部分所匹配到的內容!
如果要匹配.
我們可以使用\
來轉義。
常見模式修正符
i 在和模式進行匹配時不區分大小寫
m 多行匹配,如果目標字串 中沒有"\n"字元, 或者模式中沒有出現^或$, 設定這個修飾符不產生任何影響
s 如果設定了此修正符,那麼.將匹配所有的字元包括換行符
u 禁止貪婪匹配
e(已經被棄用)
主要有:
1.preg_match()
2.preg_match_all()
3.preg_replace()
①1.preg_match()
preg_match — 執行匹配正規表示式
語法:
int preg_match ( string $pattern , string $ subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
各引數:
$pattern: 要搜尋的模式,字串形式。
$subject: 輸入字串。
$matches: 如果提供了引數matches,它將被填充為搜尋結果。 $matches[0]將包含完整模式匹配到的文字, $matches[1] 將包含第乙個捕獲子組匹配到的文字,以此類推。
$flags:flags 可以被設定為以下標記值:
preg_offset_capture: 如果傳遞了這個標記,對於每乙個出現的匹配返回時會附加字串偏移量(相對於目標字串的)。 注意:這會改變填充到matches引數的陣列,使其每個元素成為乙個由 第0個元素是匹配到的字串,第1個元素是該匹配字串 在目標字串subject中的偏移量。
offset: 通常,搜尋從目標字串的開始位置開始。可選引數 offset 用於 指定從目標字串的某個未知開始搜尋(單位是位元組)。
②preg_match_all()
preg_match_all 函式用於執行乙個全域性正規表示式匹配。
語法:
int preg_match_all ( string $pattern , string katex parse error: expected 'eof', got '&' at position 18: …bject [, array &̲matches [, int $flags = preg_pattern_order [, int $offset = 0 ]]] )
兩者區別:返回 pattern 的匹配次數。 它的值將是 0 次(不匹配)或 1 次,因為 preg_match() 在第一次匹配後 將會停止搜尋。preg_match_all() 不同於此,它會一直搜尋subject 直到到達結尾。 如果發生錯誤preg_match()返回 false。
③preg_replace()
preg_replace 函式執行乙個正規表示式的搜尋和替換。語法:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int katex parse error: expected 'eof', got '&' at position 19: …it = -1 [, int &̲count ]] )搜尋 string 中字串並且匹配 pattern 的部分, 以 replacement 進行替換。
引數釋義:
引數說明:
$pattern: 要搜尋的模式,可以是字串或乙個字串陣列。
$replacement: 用於替換的字串或字串陣列。
$string: 要搜尋替換的目標字串或字串陣列。
$limit: 可選,對於每個模式用於每個 subject 字串的最大可替換次數。 預設是-1(無限制)。
$count: 可選,為替換執行的次數。
示例:
<?php
$string = 'google 123, 456';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'runoob $,$3';
echo preg_replace($pattern, $replacement, $string);
?>
結果:
runoob 123,456
如果 string 是乙個陣列, preg_replace() 返回乙個陣列, 其他情況下返回乙個字串。
如果匹配被查詢到,替換後的 subject 被返回,其他情況下 返回沒有改變的 subject。如果發生錯誤,返回 null。
正規表示式的初次見面結束了!!!
暑假第五周
突然發現在暑假的校園裡,人來人往,並不像冬天那樣的人煙稀少,大多數的人都是留校考研的,聽老師說,現在考研的人一年比一年的多,成功率並不是很大,每天早晨起床的時候,總是會看到有人蹲在路邊背書,並且這種背書的聲音是久違的聲音,以前只有在高中的校園裡才能聽得見,背書 快速的說著自己都聽不懂的語句,但是自己...
第五周暑假總結
時間過得真快,還有一周就要開學了,眼看已經訓練乙個多月了,可是感覺自己啥都不會。最大的進步可能就是現在做簽到題比之前快了一點吧。以前都是別人幾分鐘把簽到題做出來,然後自己就可能要半個小時,現在雖然比他們還是慢了一點,但是比之前快了,一些思維題的思路出的也比較快了,準確性也有提公升。這可能就是這一陣子...
大二暑假第五周進度報告
2.主要任務 1 河北省科技創新年報系統連線oracle資料庫 2 完成了河北省科技創新年報系統的綜合查詢和分類瀏覽功能 dml語句 select dml 注意事項及帶有運算子的select語句 dml語句 條件查詢 區間查詢與模糊查詢 排序查詢 3.主要問題 1 oracle插入資料中文亂碼,解決...