php 正则表达式学习笔记

西安汽车音响店

西安汽车音响店

2016-02-19 11:03

想要天天向上,就要懂得享受学习。图老师为大家推荐php 正则表达式学习笔记,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!
代码如下:

//匹配文本,这个偶尔比较好用,但是要小心字符中包含E 
$str = '[a-z]'; 
$str = preg_replace('/G[a-z]E/', '', $str); 
echo $str; //打印空,全被替换掉了,相关大概就是preg_quote功能 
复制内容到剪贴板代码: 
//给匹配结果命名,这样在匹配结果中就可以用这个名称来获取值 
$str = 'abc123abc'; 
preg_match('/(?Pnumd+)/', $str, $arr); 
echo $arr['num']; //相当于echo $arr[1] 


代码如下:

//仅用于分组的括号,匹配内容不会被变量捕获,有时候需要这样提高执行效率 
$str = 'abc123abc'; 
preg_match('/abc(?:d+)/', $str, $arr); 
echo $arr[1]; //除了$arr[0]外没有$arr[1]了,不会赋予1 

代码如下:

//插入的好帮手,向前、向后锚点搜索位置,每3位添加一个逗号 
$str = 'fdfad123456789fdfd'; 
$str = preg_replace('/(?=d)(?=(d{3})+(?!d))/', ',', $str); 
echo $str; //打印 fdfad123,456,789fdfd 

//以最少的结果匹配
$str = 123456;
preg_match('/d+/', $str, $arr);
echo $arr[0]; //是人都知道是123456吧
preg_match('/d+?/', $str, $arr);
echo $arr[0]; //这次是1
//一个比较有用的,可以判断前面的是否有匹配过,比如下边的例子,可以忽略等号右边是否有单引号双引号或者什么都没有
$str = HTML
font size=12/font
font size='13'/font
font size="14"/font
font size="15/font
HTML;
preg_match_all('/fonts+size=(['"]?)(d+)1[^]*/', $str, $arr);
print_r($arr);
/*
Array
(
    [0] = 12
    [1] = 13
    [2] = 14
)
*/
//部分模式修饰符,模式修饰符也可以放在表达式中的
//这里匹配符合XHTML规范的style里的颜色值,大写的STYLE被忽略了,但是里面的color可以大小写无所谓
$str = 'b style="COLOR:red"/bb STYLE="color:blue"/bb style="color:green"/b';
preg_match_all('/style=(['"]?)(?i)color:(w+)1(?-i)/', $str, $arr);
print_r($arr[2])
//也可以把匹配内容放到里面,用:隔开,就不用写结束(?-i)
//preg_match_all('/style=(['"]?)(?i:color:(w+))1/', $str, $arr);
//再看一例子
$str = 'BStyle/B';
preg_match('/B(?i:style)/B/', $str, $arr);
print_r($arr); //可以匹配到
$str = 'BStyle/b';
preg_match('/B(?i:style)/B/', $str, $arr);
print_r($arr); //什么都没匹配到
//单词检索,可惜只能用在英文
$str = 'I'm a teacher';
preg_match_all('/b[a-z]+b/i', $str, $arr);
print_r($arr)
复制内容到剪贴板代码:
//u修饰符,按unicode匹配
$str = '你您';
$str = preg_replace('/[你您]/', 'you', $str);
echo $str; //被拆开了,打印4次you
//看下面加上u修饰符后的效果,该修饰符需要编码utf-8否则会报错
//我的文本都是gb2312,所以要转成utf-8
$str = iconv('gb2312', 'utf-8', '你您');
$regex = iconv('gb2312', 'utf-8', '/[你您]/u');
$str = preg_replace($regex, 'you', $str);
echo $str; //打印2次you
//x模式修饰符,可以忽略空白和加注释
$str = 'test Test';
preg_match('/test  #只匹配小写的test/x', $str, $arr);
print_r($arr);
复制内容到剪贴板代码:
//排除环视(?!...) (?!...)、忽略优先 *? +? ?? 的复合使用
$str = 'test Btest1B test2/B';
preg_match('/B(?:.(?!B))*/B/i', $str, $arr);
//或者 preg_match('/B(?:(?!B).)*/B/i', $str, $arr);
print_r($arr)
//当时这样写应付不了 $str = 'test Btest1B test2/B test3/B';
//改写一下正则既可 preg_match_all('/B(?:(?!/?B).)*/B/i', $str, $arr);
//根据上面来完成一个最简单的UBB替换
$str = 'test [b]test1[b] test2[/b] test3[/b]test';
$str = preg_replace('/[B]((?:(?![/?B]).)*)[/B]/i', 'b1/b', $str);
$str = preg_replace('/[B]((?:(?![/?B]).)*)[/B]/i', 'b1/b', $str);
print_r($str)
//如果已经确认回朔并不会有匹配结果,可以使用固化分组来放弃备用状态提高效率
$str = 'Subject';
preg_match('/(w+):/', $str, $arr);
//用以下方法代替
//在第一组匹配规则匹配到文本末尾t时匹配结束,启用第二组匹配规则:并不会找到结果,所以这个时候回朔查找,但是w不会包含:,所以可以直接放弃,
preg_match('/(?w+):/', $str, $arr);
展开更多 50%)
分享

猜你喜欢

php 正则表达式学习笔记

Web开发
php 正则表达式学习笔记

正则表达式口诀 正则表达式学习工具

Web开发
正则表达式口诀 正则表达式学习工具

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

比较实用的正则表达式学习笔记

Web开发
比较实用的正则表达式学习笔记

正则表达式

Web开发
正则表达式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

又一篇正则表达式学习笔记

Web开发
又一篇正则表达式学习笔记

PHP 正则表达式分析RSS

Web开发
PHP 正则表达式分析RSS

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Qt实现图片移动实例(图文教程)

Qt实现图片移动实例(图文教程)

c语言10个经典小程序

c语言10个经典小程序
下拉加载更多内容 ↓