正则表达式

来源:互联网 发布:格式化js代码 编辑:程序博客网 时间:2024/06/03 16:29

<?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_grep 匹配数组的正则表达式
 * preg_split 拆分成数组  
 *   
 * file_get_contents 获取到文件的内容
 * file_put_contents 写入文件
 */
//137集

0 0
原创粉丝点击