PHP正規表示式中的元字元及其例子

2021-10-17 19:54:45 字數 4561 閱讀 4593

<?php

/*元字元:

\d 匹配任意乙個0-9的數字

\d 匹配任意乙個除十進位制數以外的字元,等價於[^0-9]

\s 匹配任意乙個空白的字元,比如換頁符、換行符、回車符號、製表符、垂直製表符

\s 匹配出空白字元以外的所有字元

\w 匹配任意乙個數字或字母或下劃線

\w 匹配除數字、字母、下劃線以外的任意字元

. 匹配除換行符以外的任意乙個字元

* 匹配0次,或1次、或多次其前面字元

+ 匹配1次或多次其前面的字元

? 匹配0次或1次前面的字元

表示其前面字元恰好出現n次

表示其前面字元出現不少於n次

表示其前面的字元至少出現n次,最多出現m次

^或\a 匹配字串開始的位置

$或者\z 匹配字串的結束位置

| 匹配兩個或多個模式

匹配方括號中的任意乙個字元

[^] 匹配除方括號中字元以外的任意乙個字元

() 將括號中作為乙個整體以便將其中的內容獲取到

*/$pattern

='/test/'

;//# ! {} |都可以用於作為定界符

$str

='abctests****sfsdfasdtest'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

echo'';

// \d代表匹配任意乙個十進位制數字等價於0-9

$pattern1

='/te\dst/'

;//注意寫斜槓

$str

='te1stdsfsdfsdfdsfds'

;var_dump

(preg_match_all

($pattern1

,$str

,$arr))

;var_dump

($arr);

echo'';

$pattern

='/te*st/'

;//* 匹配0次,或1次、或多次其前面字元

$str

='abcteeest'

;//abctst abctest abcteeeeeest

var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

echo'';

$pattern

='/te+st/'

;//+ 匹配1次或多次其前面的字元

$str

='abctest'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

echo'';

$pattern

='/test/'

;// 表示其前面字元恰好出現n次

$str

='abctest'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

echo'';

$pattern

='/test/'

;// 表示其前面字元出現不少於n次

$str

='abcteeest'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

// 混合用法

//.與混合

echo'';

$pattern

='/t.st/'

;// t...st

$str

='abcteeest'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//.與*配合

echo'';

$pattern

='/t.*st/'

;//*匹配0次,或1次、或多次其前面字元 .匹配除換行符以外的任意乙個字元

$str

='abcteeeeest'

;//abctst abctest abcteeeeeest

var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//.與*配合

echo'';

$pattern

='/t.*st/'

;//.*配合使用預設情況下是貪婪匹配(盡可能多的去匹配字元)

$str

='abcteeeeesttestsetestsetst'

;//abctst abctest abcteeeeeest

var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//.*後面加上?可以解決貪婪匹配的問題,懶惰匹配

echo'';

$pattern

='/1t.*?st/'

;$str

='1abcteeeees1ttestsetes1tsetst'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//.*後面加上?可以解決貪婪匹配的問題,懶惰匹配

echo'';

$pattern

='/1t.*?st/'

;$str

='1abcteeeees1ttestsetes1tsetst'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//^或/a 匹配字串開始位置

echo'';

$pattern

='/^test/'

;$str

='testabc'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//^或$ 配合使用

echo'';

$pattern

='/^te.*st$/'

;$str

='test'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//^或$ 配合使用

echo'';

$pattern

='/test|abc|aaa/'

;//| 匹配兩個或多個模式

$str

='testaaasdfasdfsadfaaaefw'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//匹配方括號中的任意乙個字元

echo'';

$pattern

='/t[abcde]st/'

;$str

='tdstaaasdfasdfsadfaaaefw'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr);

//[^] 匹配除方括號中字元以外的任意乙個字元

echo'';

$pattern

='/t[^e]st/'

;$str

='tast'

;var_dump

(preg_match_all

($pattern

,$str

,$arr))

;var_dump

($arr

);

正規表示式 元字元

現在你已經知道幾個很有用的元字元了,如 b 還有 d 當然還有更多的元字元可用,比如 s 匹配任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w匹配字母或數字或下劃線或漢字等。ba w b 匹配以字母a 開頭的單詞 先是某個單詞開始處 b 然後是字母a 然後是任意數量的字母或數字 w...

正規表示式 元字元

元字元 描述.點 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾 但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如...

正規表示式元字元

l 基本元字元 元字元說明 匹配任意單個字元 邏輯或操作符 定義乙個字元集合,匹配該集合中的乙個字元 對字元集合求非 是對整個集合求非,而不是緊挨著 符號的字元 在字元集合中定義乙個區間。如 a za z 對下乙個字元轉義。比如 n表示換行。數量元字元 元字元說明 匹配前乙個字元 子表示式 零次或多...