<?php
//$str="www.baidu.com";
//$preg="/(?<=www\.).*(?=\.com)/is";
//$str="php pyhon pear";
//$preg="/\bp(?!h)\w+\b/is";
//$str="@baidu.com@souhu@sougou$";
//$preg="/(?<=@).*?(?=[@#$])/is";
try {
if(preg_match_all($preg, $str,$arr)){
echo "<pre>";
var_dump($arr);
}else{
throw new Exception("匹配失败");
}
} catch (Exception $e) {
echo $e->getMessage();
}
/**
* 第十节课 正则表达式
* =====================================
* 模式修正符
* //s 将字符串视为单行,可以让.*匹配换行符
* //m 匹配多行
* //i 匹配不区分大小写
* //x 限定正则表达式里头的空格都是忽略的
* //U 匹配最近字符串的内容,禁止贪婪匹配
* //A 强制字符串开始计算
* //D 设置$符号仅匹配字符串的结尾 设置m模式修正符失效
* //e 将替换字符做表达式来使用
* ^ 必须以什么作为开始
* $ 必须以什么作为结束
* \d 匹配数字
* \w 匹配字母
* \s 匹配空格
* \b 在字符串后面添加表示后面部分要有边界比如空字符串
* \B 与\b相反
* \A 是固执的只匹配整段文本的开头,不受m模式的控制,不像^$
* \Z 与\A有些许相似 只匹配文本的结尾的,不受\n换行符的影响
* \z 是受\n换行符 的影响的
* + 匹配1个或多个
* * 匹配0个或多个
* ? 匹配0个或1个
* .* 不能匹配换行符
* {1} 此处限制1个
* {2,3} 限制2个到3个
* {5,}限定5个起
*
* 断言匹配
* 1.#$str="www.baidu.com";
$preg="/(?<=www\.).*(?=\.com)/is";
* ?<=....
* 2.a(?!p) 匹配a后面字母不为p的
* a(?=p) 匹配a后面的字母等于p的
* (?=[@#$]) 匹配后面包括@#$
*
$str="1111";
$pattern="/(\d)1{3}/i";
preg_match($pattern, $str,$all);
结果
array (size=2)
0 => string '1111' (length=4)
1 => string '1' (length=1)
特殊的说明
(?:pattam) 非捕获匹配
修改后
$str="1111";
$pattern="/(?:\d)1{3}/i";
preg_match($pattern, $str,$all);
结果
array (size=1)
0 => string '1111' (length=4)
(?!pattam) 表示所在位置右侧不能匹配
$str="1112";
$pattern="/(1){3}(?!2)/i";
preg_match($pattern, $str,$all);
结果
array (size=0)
empty
(?<!pattam) 表示位置左侧不能匹配
(?=pattam)
(?<=pattam) 所在位置左侧能够匹配
* preg_split 拆分成数组
*
* file_get_contents 获取到文件的内容
* file_put_contents 写入文件
*/
//137集