當前位置:首頁 » 編程語言 » php正則表達式中的或

php正則表達式中的或

發布時間: 2023-08-20 06:27:02

php 正則表達式總結

PHP 正則表達式總結

1.PHP中兩個常用的正則函數

a.preg_match 正則函數,以perl語言為基礎

語法:preg_match( mode,string subject,array matches)

說明:mode參數---- 正則的模塊,也就是正則表達式(語法)

subject參數---- 正則的內容

matches參數---- 正則的結果(獲得一個數組的形式)

b.ereg 正則函數,以POSIX基礎(Unix、Script)

語法:ereg(mode ,string subject, array regs)

2.正則表達式中包括的元素

a.原子(普通字元:a-z A-Z 0-9 、原子表、轉義字元)

b.元字元(有特殊功能的字元,如:# 、*)

c.模式修正符(系統內置部分字元 i、m、S、U ...)

3.正則表達式中的「原子」

a.a-z A-Z _ 0-9 //最常見的字元

b.(abc)(skd) //用圓括弧包含起來的單元符號(一個整體)

c.[abcs][^abd] //用方括弧包含的原子表,原子表中的^代表排除或相反的內容

d.轉義字元

d 包含所有的數字[0-9]

D 除所有數字外[^0-9]

w 包含所有英文字元[a-z A-Z 0-9]

W 除所有英文字元外[^a-z A-Z 0-9]

s 回車,換行等

......

註明: 圓括弧 必須是整體才能匹配; 方括弧 只要是其子集,都可以匹配(內容存在)

4.正則表達式元字元

* 匹配前一個內容的0次1次或多次

. 匹配內容的0次1次或多次,但不包含回車換行(代指自己,任何內容)

+ 匹配前一個內容的1次或多次

? 匹配前一個內容的.0次或1次

| 選擇匹配類似PHP中的| (因為這個運算符合是弱類型導致前面最為整體匹配,類似一個單詞匹配)

^ 匹配字元串首部內容

$ 匹配字元串尾部內容

b 匹配單詞邊界,邊界可以是空格或者特殊符合(有單詞分界符,類似空格)

B 匹配除帶單詞邊界意外內容(無單詞分界符)

{m} 匹配前一個內容的重復次數為M次

{m,} 匹配前一個內容的重復次數大於等於M次

{m,n} 匹配前一個內容的重復次數M次到N次

( ) 合並整體匹配,並放入內存,可使用1 2…依次獲取 (調用放入內存中的內容)

5.運算順序

依然遵循從左到→右的運算規則

優先順序:

( ) 圓括弧因為是內存處理所以最高

* ? + { } 重復匹配內容其次

^ $ b 邊界處理第三

| 條件處理第四

最後按照運算順序計算匹配

6.模式修正符

模式修正符是為正則表達式增強和補充的一個功能,使用在正則之外 例如:/ 正則 / U

常用修正符:

i 正則內容在匹配時候不區分大小寫(默認是區分的)

m 在匹配首內容或者尾內容時候採用多行識別匹配

s 將轉義回車取消是為單行匹配如. 匹配的時候

x 忽略正則中的空白

A 強制從頭開始匹配

D 強制$匹配尾部無任何內容 n

U 禁止貪婪匹配 只跟蹤到最近的一個匹配符並結束, 常用在採集程序上的正則表達式

7.匹配功能

preg_match_all 全部匹配函數

語法:preg_match_all ( string pattern, string subject, array matches [, int flags] )

說明:對結果排序使 $matches[0] 為全部模式匹配的數

用途:截取比較詳細的內容,採集網頁,分析文本

8.替換功能

preg_replace 正則替換函數

語法:preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

說明:通過正則表達式來替換相關內容,類似之前學過的str_replace字元串替換,但 功能要強於它

提示:1、替換內容可以是一個正則也可以是數組正則

2、替換內容可以通過修正符e來解決替換執行內容

用途:替換一些比較復雜的內容上,也可以用於內容的轉換上

9.分割功能

preg_split 正則切割

語法:preg_split ( string pattern, string subject [, int limit [, int flags]] )

說明:通過正則表達式來切割相關內容,類似之前學過的explode切割函數,但explode 只能按照一種方式切割有局限性。

;

❷ PHP正則表達式的使用技巧

PHP正則表達式的定義

用於描述字元排列和匹配模式的一種語法規則 它主要用於字元串的模式分割 匹配 查找及替換操作

PHP中的正則函數

PHP中有兩套正則函數 兩者功能差不多 分別為

一套是由PCRE(Perl Compatible Regular Expression)庫提供的 使用 preg_ 為前綴命名的函數

一套由POSIX(Portable Operating System Interface of Unix )擴展提供的 使用以 ereg_ 為前綴命名的函數 (POSIX的正則函數庫 自PHP 以後 就不在推薦使用 從PHP 以後 就將被移除)

由於POSIX正則即將推出歷史舞台 並且PCRE和perl的形式差不多 更利於我們在perl和php之間切換 所以這里重點介紹PCRE正則的使用

PCRE正則表達式

PCRE全稱為Perl Compatible Regular Expression 意思是Perl兼容正則表達式

在PCRE中 通常將模式表達式(即正則表達式)包含在兩個反斜線 / 之間 如 /apple/

正則中重要的幾個概念有 元字元 轉義 模式單元(重復) 反義 引用和斷言 這些概念都可以在文章[ ]中輕松的理解和掌握

常用的元字元(Meta character)

元字元 說明

/A 匹配字元串串首的原子

/Z 匹配字元串串尾的原子

/b 匹配單詞的邊界 //bis/ 匹配頭為is的字元串 /is/b/ 匹配尾為is的字元串 //bis/b/ 定界

/B 匹配除單詞邊界之外的任意字元 //Bis/啟局 匹配單詞 This 中的 is

/d 匹配一個數字 等價於[ ]

/D 匹配除數字以外任何一個字元 等價於[^ ]

/w 匹配一個英文字母 數字或下劃線 等價於[ a zA Z_]

/W 匹配除英文字母 數字和下劃線以外任何一個字元 等價於[^ a zA Z_]

/s 匹配一個空白字元 等價於[/f/t/v]

/S 匹配除空白字元以外任何一個字元 等價於[^/f/t/v]

/f 匹配一個換頁符等價於 /x c 或 /cL

匹配段旁鋒一個換行符 等價於 /x a 或 /cJ

匹配一個回車符等價於/x d 或 /cM

/t 匹配一個製表符 等價於 /x /或/cl

/v 匹配一個垂直製表符 等價於/x b或/ck

/oNN 匹配一個八進制數字

/xNN 匹配一個十六進制數字

/cC 匹配一個控制字元

模式修正符(Pattern Modifiers)

模式修正符在忽略大小寫 匹配多行中使用特別多 掌握了這一個修正符 往往能解決我們遇到的很多問題

i -可同時匹配大小寫字母

M -將字元串視為多行

S -將字元串視為單行 換行符做普通字元看待 使 匹配任何字元

X -模式中的空白忽略不計

U -匹配到最近的字元串

e -將替換的字元串作為表達使用

格式 /apple/i匹配 apple 或 Apple 等 忽略大小寫 /i

PCRE的模式單元

// 提取第一位的屬性

/^/d{ } ([/W])/d{ }// /d{ }$匹配 / / 等字元串 但上述正則表達式不匹配 / 的格式 這是因為模式 [/W] 的結果 / 已經被存儲 下個位置 / 引用時 其匹配模式也是字元 /

當不需要存儲匹配結果時使用非存儲模式單元 (? )

例如/(?:a|b|c)(D|E|F)// g/ 將匹配 aEEg 在一些正則表達式中 使握晌用非存儲模式單元是必要的 否則 需要改變其後引用的順序 上例還可以寫成/(a|b|c)(C|E|F)/ g/

PCRE正則表達式函數

以下為引用的內容

preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace()

函數的具體使用 我們可以通過PHP手冊來找到 下面分享一些平時積累的正則表達式

匹配action屬性

以下為引用的內容

$str = ; $match = ; preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match); print_r($match);

在正則中使用回調函數

以下為引用的內容

/** * replace some string by callback function * */ function callback_replace() { $url = ; $str = ; $str = preg_replace ( /(?<=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str ); echo $str; } function search($url $match){ return $url / $match; }

帶斷言的正則匹配

以下為引用的內容

$match = ; $str = xxxxxx cn bold font paragraph text

; preg_match_all ( /(?<=<(/w{ })>) *(?=</// >)/ $str $match ); echo 匹配沒有屬性的HTML標簽中的內容 ; print_r ( $match );

替換HTML源碼中的地址

以下為引用的內容

$form_ = preg_replace ( /(?<=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ );

lishixin/Article/program/PHP/201311/21027

❸ PHP正則表達式匹配0個或多個指定的字元

proct-1349.html
是對應 test.php?action=proct&rid=1349

proct.html

的rid怎麼辦?為 空?
RewriteRule ^/?([a-zA-Z]{1,})(-([0-9]{1,}))?\.html$ test.php?action=$1&rid=$3
123456789

熱點內容
java16進制字元串 發布:2025-02-05 10:38:13 瀏覽:643
創業團隊配置有哪些 發布:2025-02-05 10:37:40 瀏覽:630
王者鍵盤怎麼設置安卓 發布:2025-02-05 10:32:01 瀏覽:373
阿里雲輕量伺服器ip搭建 發布:2025-02-05 10:24:46 瀏覽:486
編程高精度 發布:2025-02-05 10:22:28 瀏覽:230
使命召喚如何配置爆炸狙 發布:2025-02-05 10:08:12 瀏覽:143
java訪問共享目錄 發布:2025-02-05 10:03:56 瀏覽:281
行車記錄儀存儲卡多大合適 發布:2025-02-05 09:35:21 瀏覽:112
oppo手機鎖屏密碼忘了怎麼辦 發布:2025-02-05 09:33:50 瀏覽:124
phprsa演算法 發布:2025-02-05 09:33:48 瀏覽:231