一些常用的正規表示式

2021-06-07 16:25:28 字數 3149 閱讀 8732

//匹配文字,這個偶爾比較好用,但是要小心字元中包含\e

$str = '[a-z]';

$str = preg_replace('/\g[a-z]\e/', '', $str);

echo $str; //列印空,全被替換掉了,相關大概就是preg_quote功能

//給匹配結果命名,這樣在匹配結果中就可以用這個名稱來獲取值

$str = 'abc123abc';

preg_match('/(?p\d+)/', $str, $arr);

echo $arr['num']; //相當於echo $arr[1]

//僅用於分組的括號,匹配內容不會被變數捕獲,有時候需要這樣提高執行效率

$str = 'abc123abc';

preg_match('/abc(?:\d+)/', $str, $arr);

echo $arr[1]; //除了$arr[0]外沒有$arr[1]了,不會賦予\1

//插入的好幫手,向前、向後錨點搜尋位置,每3位新增乙個逗號

$str = 'fdfad123456789fdfd';

$str = preg_replace('/(?<=\d)(?=(\d)+(?!\d))/', ',', $str);

echo $str; //列印 fdfad123,456,789fdfd

//以最少的結果匹配

$str = 123456;

preg_match('/\d+/', $str, $arr);

echo $arr[0]; //是人都知道是123456吧

preg_match('/\d+?/', $str, $arr);

echo $arr[0]; //這次是1

//乙個比較有用的,可以判斷前面的是否有匹配過,比如下邊的例子,可以忽略等號右邊是否有單引號雙引號或者什麼都沒有

$str = <<

html;

preg_match_all('/]*>/', $str, $arr);

print_r($arr);

/*array

( [0] => 12

[1] => 13

[2] => 14

)*/

//部分模式修飾符,模式修飾符也可以放在表示式中的

//這裡匹配符合xhtml規範的style裡的顏色值,大寫的style被忽略了,但是裡面的color可以大小寫無所謂

$str = '';

preg_match_all('/style=([\'"]?)(?i)color:(\w+)\1(?-i)/', $str, $arr);

print_r($arr[2])

//也可以把匹配內容放到裡面,用:隔開,就不用寫結束(?-i)

//preg_match_all('/style=([\'"]?)(?i:color:(\w+))\1/', $str, $arr);

//再看一例子

$str = 'style';

preg_match('/(?i:style)<\/b>/', $str, $arr);

print_r($arr); //可以匹配到

$str = 'style';

preg_match('/(?i:style)<\/b>/', $str, $arr);

print_r($arr); //什麼都沒匹配到

//單詞檢索,可惜只能用在英文

$str = 'i\'m a teacher';

preg_match_all('/\b[a-z]+\b/i', $str, $arr);

print_r($arr)

//u修飾符,按unicode匹配

$str = '你您';

$str = preg_replace('/[你您]/', 'you', $str);

echo $str; //被拆開了,列印4次you

//看下面加上u修飾符後的效果,該修飾符需要編碼utf-8否則會報錯

//我的文字都是gb2312,所以要轉成utf-8

$str = iconv('gb2312', 'utf-8', '你您');

$regex = iconv('gb2312', 'utf-8', '/[你您]/u');

$str = preg_replace($regex, 'you', $str);

echo $str; //列印2次you

//x模式修飾符,可以忽略空白和加注釋

$str = 'test test';

preg_match('/test #只匹配小寫的test/x', $str, $arr);

print_r($arr);

//排除環視(?/i', $str, $arr);

//或者 preg_match('/(?:(?!).)*<\/b>/i', $str, $arr);

print_r($arr)

//當時這樣寫應付不了 $str = 'testtest1test2test3';

//改寫一下正則既可 preg_match_all('/(?:(?!<\/?b>).)*<\/b>/i', $str, $arr);

//根據上面來完成乙個最簡單的ubb替換

$str = 'test [b]test1[b] test2[/b] test3[/b]test';

$str = preg_replace('/\[b\]((?:(?!\[\/?b\]).)*)\[\/b\]/i', '\1', $str);

$str = preg_replace('/\[b\]((?:(?!\[\/?b\]).)*)\[\/b\]/i', '\1', $str);

print_r($str)

//如果已經確認回朔並不會有匹配結果,可以使用固化分組來放棄備用狀態提高效率

$str = 'subject';

preg_match('/(\w+):/', $str, $arr);

//用以下方法代替

//在第一組匹配規則匹配到文字末尾t時匹配結束,啟用第二組匹配規則:並不會找到結果,所以這個時候回朔查詢,但是\w不會包含:,所以可以直接放棄,

preg_match('/(?>\w+):/', $str, $arr);

一些常用的正規表示式

常用表示式 d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數...

常用的一些正規表示式

匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計2,ascii字元計1 匹配空白行的正規表示式 n s r 評注 可以用來刪除空白行 匹配ht...

一些常用的正規表示式

關鍵字 正規表示式 正規表示式是一種通用的標準,大部分計算機語言都支援正規表示式,包括as3,這裡 出了一些常用的正規表示式語句,大家用到的時候就不用自己寫了 d 匹配非負整數 正整數 0 0 9 1 9 0 9 匹配正整數 d 0 匹配非正整數 負整數 0 0 9 1 9 0 9 匹配負整數 d ...