正则表达式的学习笔记
时间:2007-02-09
来源:互联网
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('被替换','替换',字符串)
例:
<?php
$str = '这是粗体字';
$newstr = ereg_replace('\(.*)\','<b>\1</b>',$str);
echo $newstr;
//这是粗体字
?>
分隔字符串
split()
<?php
$str = 'a,b,c,d';
$arr = split(',',$str); //$arr为数组
echo '<pre>';
print_r($arr);
/*
$str = 'a,b@c%d';
$arr = split('[,@%]',$str);
*/
?>
和perl兼容的正则表达式
界定符
/pattern/
{pattern}
[pattern]
(pattern)
<pattern>
例:
<?php
preg_match('/\.(.*)\./','http://www.liuyu.com',$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('/\.(.*)\./','http://www.liuyu.com.net',$new);
//liuyu.com
preg_match('/\.(.*?)\./','http://www.liuyu.com.net',$new);
//liuyu
非捕获 (?:)
preg_match('/(?:www)(.*)/','http://www.liuyu.com',$new);
//.liuyu.com
尾部选项:
/regexp/i 不区分大小写
/regexp/x 如果加上该修饰符,表达式中的空白字符将会被忽略,除非他已经被转义
/regexp/m 默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指
字符串的每一行:每一行的开头就是"^",结尾就是"$"。
/regexp/e 本修饰符仅仅对于replacement有用,代表在热placement中作为PHP代码。
/regexp/U 使用非贪婪模式
/regexp/A 如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分
preg_match('/LIUYU/i','http://www.liuyu.com',$new);
//liuyu
preg_match_all -- 进行全局正则表达式匹配
作者: boy805 发布时间: 2007-02-08
作者: luzhou 发布时间: 2007-02-11
作者: zhj6500 发布时间: 2007-02-12
作者: MySQL 发布时间: 2007-02-12
作者: niohe 发布时间: 2007-02-12
引用:
原帖由 niohe 于 2007-2-12 14:55 发表怎么也学不会正则,郁闷!
正则绝对没这么可怕
作者: jidixuelang 发布时间: 2007-02-12
作者: mz198424 发布时间: 2007-03-20
作者: hotbone 发布时间: 2007-03-21
作者: xiaojia 发布时间: 2007-03-22
作者: imacoo 发布时间: 2007-03-27

作者: pgx112 发布时间: 2007-03-30
好看喔~~
Ec2Link Leader of Website Hosting
作者: BeeGirl033 发布时间: 2007-04-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28