日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

正则在php中的使用

發(fā)布時(shí)間:2024/1/17 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则在php中的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、基礎(chǔ)

a)常用元字符

代碼說明
.匹配除了換行符意外的任意字符
\w字母|數(shù)字|下劃線|漢字
\s匹配任意的空白符
\d匹配數(shù)字
\b匹配單詞的開始或者結(jié)束
^匹配字符串的開始
$

匹配字符串的結(jié)束

?

b)常用限定符

*重復(fù)零次或更多次
+重復(fù)一次或更多次
重復(fù)一次或零次
{n}重復(fù)n次
{n,}重復(fù)n次或更多次
{n,m}重復(fù)n到m次

?

我們也可以輕松地指定一個(gè)字符范圍,像[0-9]代表的含意與\d就是完全一致的:一位數(shù)字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考慮英文的話)。

c)分支條件

正則表達(dá)式里的分枝條件指的是有幾種規(guī)則,如果滿足其中任意一種規(guī)則都應(yīng)該當(dāng)成匹配,具體方法是用|把不同的規(guī)則分隔開。

0\d{2}-\d{8}|0\d{3}-\d{7}

d)子表達(dá)式

可以用小括號(hào)來指定子表達(dá)式(也叫做分組),子表達(dá)式的內(nèi)容會(huì)被捕獲,再次使用就方便了。

e)反義

有時(shí)需要查找不屬于某個(gè)能簡單定義的字符類的字符。比如想查找除了數(shù)字以外,其它任意字符都行的情況,這時(shí)需要用到反義:

\W匹配不是數(shù)字字母下劃線或漢字的字符
\S任意不是空白符的字符
\D任意非數(shù)字字符
\B不是以單詞開頭的位置
[^x]除了x意外的任意字符
[^aeiou]aeiou以外的字符

?

f)反向引用

使用小括號(hào)指定一個(gè)子表達(dá)式后,匹配這個(gè)子表達(dá)式的文本(也就是此分組捕獲的內(nèi)容)可以在表達(dá)式或其它程序中作進(jìn)一步的處理。默認(rèn)情況下,每個(gè)分組會(huì)自動(dòng)擁有一個(gè)組號(hào),規(guī)則是:從左向右,以分組的左括號(hào)為標(biāo)志,第一個(gè)出現(xiàn)的分組的組號(hào)為1,第二個(gè)為2,以此類推。

g)貪婪與懶惰

當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符。以這個(gè)表達(dá)式為例:a.*b,它將會(huì)匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會(huì)匹配整個(gè)字符串a(chǎn)abab。這被稱為貪婪匹配。

有時(shí),我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個(gè)問號(hào)?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。

a.*?b匹配最短的,以a開始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會(huì)匹配aab(第一到第三個(gè)字符)和ab(第四到第五個(gè)字符)。

*?重復(fù)任意次,但盡可能少重復(fù)
+?重復(fù)1次或更多次,但盡可能少重復(fù)
??重復(fù)1次或0次,但盡可能少重復(fù)
{n,m}?重復(fù)n到m次,但盡可能少重復(fù)
{n,}?重復(fù)n次以上,但盡可能少重復(fù)

?

內(nèi)容參考自:http://www.92csz.com/regex/

?

二、php中使用正則

a)匹配

$pattern = "/<div>.*div>/i"; $subject = "<div>abc</div><b>d</b><div></div>"; preg_match_all($pattern, $subject, $matchs); echo htmlentities($matchs[0][0]);

輸出:<div>abc</div><b>d</b><div></div>(貪婪)

$pattern = "/<div>.*?div>/i"; preg_match_all($pattern, $subject, $matchs); echo '<br />'; echo htmlentities($matchs[0][0]);

輸出:<div>abc</div>(懶惰)

b)替換

$string = 'The quick brown fox jumped over the lazy dog.'; echo $string . '<br>'; $patterns = array('/quick/', '/brown/', '/fox/'); $replacements = array('slow', 'black', 'bear'); echo preg_replace($patterns, $replacements, $string);

輸出:

The quick brown fox jumped over the lazy dog.

The slow black bear jumped over the lazy dog.

?

$string = "hello 100"; $pattern = "/(\w+) (\d+)/i"; $replacement = "$1,$2"; echo preg_replace($pattern, $replacement, $string);

輸出:hello,100

轉(zhuǎn)載于:https://www.cnblogs.com/hwt987/p/3780098.html

總結(jié)

以上是生活随笔為你收集整理的正则在php中的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。