Chinaunix首页 | 论坛 | 博客
  • 博客访问: 200859
  • 博文数量: 33
  • 博客积分: 995
  • 博客等级: 准尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-13 21:36
文章分类

全部博文(33)

文章存档

2014年(9)

2011年(1)

2010年(2)

2009年(7)

2008年(8)

2007年(3)

2006年(3)

我的朋友

分类:

2007-03-06 15:24:30

ereg('匹配','字符串')  区分大小写
eregi -- 不区分大小写的正则表达式匹配
^ 匹配首
$ 匹配尾
. 匹配任意字符
注意:在匹配过程中匹配以上符号时需要转义,例如:"\$\."
[ ]     括号内为任意选择其一匹配,例如:p[hop]p  php,pop,ppp等都可以(包含)
       ereg('p[^hop]p','pap')  (不包含,“^”去反的意思)
[a-zA-Z0-9]    表示大小写a到z及0到9所有字符   
|      二选一    net|com
.*     所有字符
重复操作符:
?    0个或1个          例如:ereg('a?',',')是匹配的,表示字符串中有0个或者1个a
*     0个或更多         例如:ereg('a*',',')是匹配的
+     1个或更多         例如:ereg('a+',',')是不匹配的
{n}   次数必须匹配       例如:ereg('a{2}','a,')是不匹配的,字符串中必须存在2个a
{n,m} 最少n次,最多m次  
例如:ereg('a{2,3}','a,')是不匹配的,字符串中至少存在2个a,最多3个a。(但是如果你有超过3个的a,他也会认为匹配,因为他已经匹配了你的条件)
     ereg('ab{2,3}c','abbbbc')是不匹配的,因为a和c限制了中间的b,上例的那个没有前后限制
{n,}  最少n次        例如:ereg('a{2,}','aaa')是匹配的

POSIX格式的正则表达式
[:alnum:]    表示数字字符    [0-9a-zA-Z]
[:alpha:]    表示字母    [a-zA-Z]
[:blank:]    空格和制表符    [ \t]
[:space:]    空白(包括换行,回车,制表符,空格,竖向制表符)    [\n\r\t \x0B]
[:cntrl:]    控制符        [\x01-\x1F]
[:digit:]    数字        [0-9]
[:lower:]    小写字母    [a-z]
[:upper:]    大写字母    [A-Z]
[:xdigit:]    十六进制字符    [0-9a-fA-F]
[:ascii:]    ASC2        [\x01-\x7F]
正则替换
ereg_replace('被替换','替换',字符串)
例:
$str = '这是[b]粗体[/b]字';
$newstr = ereg_replace('\[b](.*)\[/b]','\1',$str);
echo $newstr;
//这是粗体字
?>
分隔字符串
split()
$str = 'a,b,c,d';
$arr = split(',',$str); //$arr为数组
echo '
';
print_r($arr);
/*
$str = 'a,b@c%d';
$arr = split('[,@%]',$str);
*/
?>
和perl兼容的正则表达式
界定符
/pattern/
{pattern}
[pattern]
(pattern)

例:
preg_match('/\.(.*)\./','',$new);
// 转义\.  /。。。。/为perl语言
echo $new[1]; //$new为数组,liuyu
//如果提供了 matches,则其会被搜索的结果所填充。$matches[0]  将包含与整个模式匹配的文本,$matches[1]  将
包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
?>
字符类
\s    空白    [\r\n \t]
\S    非空白    [^\r\n \t]
\w    字符    [0-9A-Za-z]
\W    非字符    [^0-9A-Za-z]
\d    数字    [0-9]
\D    非数字    [^0-9]
贪婪模式:
贪婪字符   非贪婪字符
?        ??
*        *?
+        +?
{n}        {n}?
{n,m}        {n,m}?
{n,}        {n,}?
preg_match('/\.(.*)\./','.net',$new);
//liuyu.com
preg_match('/\.(.*?)\./','.net',$new);
//liuyu
非捕获 (?:)
preg_match('/(?:www)(.*)/','',$new);
//.liuyu.com

尾部选项:
/regexp/i    不区分大小写
/regexp/x    如果加上该修饰符,表达式中的空白字符将会被忽略,除非他已经被转义
/regexp/m    默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。
/regexp/e    本修饰符仅仅对于replacement有用,代表在热placement中作为PHP代码。
/regexp/U    使用非贪婪模式
/regexp/A    如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分
preg_match('/LIUYU/i','',$new);
//liuyu
preg_match_all -- 进行全局正则表达式匹配
阅读(1007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~