2013年正則表達式學習筆記

/****
正則表達式
用於描述字符排列模式一種語法規則:
作用: 字符串的模式分割、匹配、查找、替換
正規字符,abcd123 特殊字符:() ? ^ $


原子:(普通字符,如:英文字符)
單個字符,數字,如a-z,A-Z,0-9
 
(abc)
原子表:[abc] 只匹配其中的一個
 [^abc] 匹配除原子表中的字母任何一個
 [0-9]
 [a-zA-Z0-9]


轉義字符
\d 匹配一個數字[0-9]
\D 匹配除數字以外的任何一個字符[^0-9]
\w 匹配一個英文字母,數字或下劃線[0-9a-zA-Z]
\W 匹配除一個英文字母,數字或下劃線外任何一個字符[^0-9a-zA-Z]
\s 匹配一個空白字符[\f\n\r\t\v]
\S 匹配除空白以外的任何一個字符
\f
\n
\r
\t
\v
\oNN
\XNN
\cC




元字符:(有特殊功能用途字符)* + ? . | ^ $
* 0,1次或多次匹配其前的原子
+ 1次或多次匹配其前的原子
? 0次或1次匹配其前的原子
. 匹配除換行符外任何一個字符,相當於[^\n] [^\n\r]
| 匹配兩個或多個選擇
^ 匹配字符串串首的原子                                                                                                                                                                 
$ 匹配字符串串尾的原子
\b 匹配單詞的邊界
\B 匹配單詞邊界以外的
{m} 表示其前原子恰好出現m次
{m,n}表示其前的原子出現至少出現m次,最多出現n次
{m,}表示其前的原子出現不少於m次
(abc)整體表示一個原子


模式匹配的順序  左到右


模式單元() 1
重複匹配 ? * + {} 2
邊界限制 ^ $ \b \B 3
模式選擇 | 4


模式修正字符:(i,U,s,x)
標記在整個模式之外
/abc/iUsx
i 不區分大小寫匹配
m 將字符串視爲多行
s 將字符串視爲單行,換行符作爲普通字符
x 將模式中的空白忽略
e
A
D
U
S




兩種函數庫,
PCRE preg_

POSIX ereg_

****/






?>
<!--<form>
請輸入你要匹配的字符:<input type="text" name="str" size="50" />
    <input type="submit" value="提交" />
</form>
<hr>-->
<?php
/*****
$str=$_GET["str"];
// $str="aaaaaaaaaaaa 
//  bbbbbbbbbbbbb";
// $mode="/^\d{4}\W\d{2}\W\d{2}$/";
$mode="/^abc/i";

if(preg_match($mode,$str,$content))
{
echo "你輸入的字符串" .$str." 和模式".$mode." 匹配成功,匹配出來的字符是:".$content[0];
}else
{
echo "你輸入的字符串" .$str." 和模式".$mode." 匹配不成功";
}

****/




//$str="thi6s is8 a demo9";
//echo preg_replace("/\d/","(MM)",$str);


//$str="current data and time is ".date("Y-m-d H:i a")."we are learning php";
// echo preg_replace("/(\d{4}\d{2}\d{2} \d{2}\d{2} [ap]m)/i","<font color='#CC0033'>\\1</font>",$str);




//$url="你好http://www.baidu.com 搜索引擎,hello哦http://www.google.com我很喜歡http://www.boobooke.com";
//echo $url;
//function display(){
//
// echo preg_replace("/.*(http:\/\/www\.\w+\.com).*/is","\\1",$url,1);
// }


/****
$str="Linux是一種自由和開放源碼的類Unix操作系統,存在着許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻遊戲控制檯、臺式計算機、大型機和超級計算機。Linux是一個領先的操作系統,世界上運算最快的10臺超級計算機運行的都是Linux操作系統。嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和數據庫的操作系統。Linux得名於天才程序員林納斯·託瓦茲。";
$arr=preg_split("/[。,、\s]/",$str);
print_r($arr);
echo "<br>";
foreach($arr as $value)
{
echo $value."<BR>";
}




$content="當前的日期和時間是:".date("Y-m-d H:i a")."一起happy";
if(preg_match("/(\d{4}-\d{2}-\d{2})(\d{2}\d{2})([ap]m)/",$content,$m))
{
echo "匹配時間日期" .$m[0]."<Br>";
echo "當前日期" .$m[1]."<Br>";
echo "當前時間" .$m[2]."<Br>";
echo "當前上下午" .$m[3]."<Br>";
}else
{
echo "匹配不成功<BR>";
echo $content."<Br>";
}




$arr=array("aa bb","ccc","abc","yousdfd123","df3df");
print_r(preg_grep("/\d/",$arr));
****/






/***
$urlstr="你好在:http://www.google.com裏面可以搜到http://www.Baidu.com,在百度裏面能搜到http://www.bing.org還可以搜到http://www.soso.com";
echo url2html($urlstr);
function url2html($urlstr)
{
preg_match_all("/http:\/\/(www\.)?.+(com|net|org)/iU",$urlstr,$urls);
print_r($urls);
foreach($urls[0] as $url)
{
$urlstr=str_replace($url,"<a href=$url>$url</a>",$urlstr);
}
return $urlstr;
}


***/


$str="
[b]meet_web[/b]<br>
[i]meet_web[/i]<br>
[u]meet_web[/u]<br>
[size=10]meet_web[/size]<Br>
[color=red]meet_web[/color]<Br>
[align=left]meet_web[/align]<Br>
[align=center]meet_web[/align]<Br>
[align=right]meet_web[/align]<Br>
[url=http://www.baidu.com]http://www.baidu.com[/url]<Br>
[url]www.baidu.com[/url]<Br>
[img]http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif[/img]<Br>
[[email protected]][email protected][/email]<br>


";
echo $str;
echo "<BR>";
echo "<BR>";
echo "<BR>";
echo conUbb($str);
echo "<BR>";
echo "<BR>";


function conUbb($str)
{
$patter=array(
"/\[b\](.+?)\[\/b\]/is",
"/\[i\](.+?)\[\/i\]/is",
"/\[u\](.+?)\[\/u\]/is",
"/\[size=(\d{1,2})\](.+?)\[\/size\]/is",
"/\[color=([a-z]{3,}|[0-9a-zA-Z]{6})\](.+?)\[\/color\]/is",
"/\[align=(left|right|center)\](.+?)\[\/align\]/is",
"/\[img\](.+?)\[\/img\]/is",
"/\[url=(.+?)\](.+?)\[\/url\]/is",
"/\[url\]www\.(.+?)\[\/url\]/is",
"/\[email=([.a-z]+?)@(.+?)\](.+?)\[\/email\]/"

);
$replace=array(
"<b>\\1</b>",
"<i>\\1</i>",
"<u>\\1</u>",
"<font size='\\1'>\\2</font>",
"<font color=\\1>\\2</font>",
"<div align='\\1'>\\2</div>",
"<img src='\\1'/>",
"<a href=\\1>\\2</a>",
"<a href='http://www.\\1'>www.\\1</a>",
"<a href='mailto:\\1@\\2'>\\1@\\2</a>"
);
$str1=preg_replace($patter,$replace,$str);
return $str1;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章