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;
}


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