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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 正则匹配反向引用,php正则表达式子模式的反向引用学习笔记

發布時間:2024/9/20 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 正则匹配反向引用,php正则表达式子模式的反向引用学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需要用正則表達式獲取字符串的標題。標題標簽是h1~h6。

使用正則表達式:"@(.*?)@"或者'(.*?)@'。使用了@作為分隔符,注意單雙引號的差別\\1與\1.

例1

代碼如下 復制代碼

$str='

php php php php php php1

php php php php php php2

php php php php php php3

php php php php php php4

';

preg_match_all("@(.*?)@",$str,$all);

print_r($all);

?>

結果

Array

(

[0] => Array

(

[0] =>

php php php php php php1

[1] =>

php php php php php php2

[2] =>

php php php php php php3

[3] =>

php php php php php php4

)

[1] => Array

(

[0] => 1

[1] => 2

[2] => 3

[3] => 4

)

[2] => Array

(

[0] => php php php php php php1

[1] => php php php php php php2

[2] => php php php php php php3

[3] => php php php php php php4

)

)

例2

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

功能

在 subject 中搜索 pattern 模式的匹配項并替換為 replacement。如果指定了 limit,則僅替換 limit 個匹配,如果省略 limit 或者其值為 -1,則所有的匹配項都會被替換。

replacement可以包含\\n形式或$n形式的逆向引用,n可以為0到99,\\n表示匹配pattern第n個子模式的文本,\\0表示匹配整個pattern的文本。

子模式

$pattern參數中被圓括號括起來的正則表達式,子模式的數目即從左到右圓括號的數目。(pattern即模式)

例1:最簡單最有用的例子是確定文字中連續出現兩個相同單詞的位置

代碼如下 復(www.111cn.net)制代碼

$string = "Is is the cost of of gasoline going up up";

$pattern = "/\b([a-z]+) \\1\b/i"; //這里的\\1不能使用\$1或$1

$str = preg_replace($pattern, "\\1", $string); //這里的\\1可以使用\$1或$1,引用第一個子匹配

echo $str; //效果是Is the cost of gasoline going up

?>

例中的子表達式就是圓括號內的項。\b匹配單詞的開始或結束。+匹配重復一次或更多次。

該子表達式匹配的是一個或多個字母字符的單詞,即由'[a-z]+'匹配的。

該正則表達式的第二部分是對前面所捕獲的子匹配的引用,也就是由附加表達式所匹配的第二次出現的單詞,用'\\1'來引用第一個子匹配,第一個\是轉義符。

i是正則表達式中的修正符。i:忽略大小寫。

例3:

正則表達式的逆向引用($0-99或\\0-99)和子模式以(/()/)開始。

這里$0是全部匹配模式的匹配項。$1是第1個子匹配,$2至$99依次是第2個至第99個子匹配。

用$1-99后向引用子匹配時,如果后面的字符是數字,要用花括號區別開。例:${1}1 。

代碼如下 復制代碼

$string = "{April 15, 2003}";

//'w'匹配字母、數字和下劃線,'d'匹配0-99數字,'+'匹配重復一次或更多次。

$pattern = "/{(\w+) (\d+), (\d+)}/i"; //在字符串中要搜索的匹配項

$replacement1 = "\${1}1,\$3";

$replacement2 = "\$0";

$replacement3 = "\$1";

$replacement4 = "\$2";

$replacement5 = "\$3";

echo "
";

//字符串被替換為與第n個被捕獲的括號內的子模式所匹配的文本

print preg_replace($pattern, $replacement1, $string);

echo "
";

print preg_replace($pattern, $replacement2, $string);

echo "
";

print preg_replace($pattern, $replacement3, $string);

echo "
";

print preg_replace($pattern, $replacement4, $string);

echo "
";

print preg_replace($pattern, $replacement5, $string);

echo "
";

//一般表現形式

print preg_replace("/\w+/i","j",$string);

?>

效果:

April1,2003

{April 15, 2003}

April

15

2003

{j j, j}

測試已通過。

from:

http://www.111cn.net/phper/210/55602.htm

總結

以上是生活随笔為你收集整理的php 正则匹配反向引用,php正则表达式子模式的反向引用学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。