暑假第五周練習 二 php學習 正規表示式

2021-10-23 11:12:43 字數 3346 閱讀 2057

定義:正規表示式描述了一類字串的特徵,通過這個特徵與特定的函式配合,對其它的字串進行匹配、查詢、替換及分割操作! 這類字串的特徵是由乙個或多個。

我們一般習慣使用正斜線"/"作為定界的字元

當然除了字母、數字、和反斜線以外的字元都可以作為定界符,比如#!

{}|都是可以的!

定界符放在正規表示式的起始位置,前後一致!

字串的一些字元,比如: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插入資料中文亂碼,解決...