标签:txt inter ext 表示 pod 一起 区分 ace --
使用方法:
①:描述我们要找的字符串的规律
②:调用函数,执行该正则表达式
PHP:
//把字符串haha找出来 $str="haha,this is my blog" preg_match_all(‘/haha/‘,$str,$res); print_r($res);
在PHP里正则必须以/开始,以/结束。
正则表达式必须想明白:找谁?怎么找?找几个
字符边界:开始和结束的范围:
^匹配字符串的开始
$匹配字符串的结束
\b匹配单词的开始和结尾
\B匹配单词的非边界
字符集合[abced],[0123456]里面任意条件符合找出来
字符补集 [ ^abc]不在abc里,符合里面任意条件的不要
字符范围[a-z0-9],必须是连续的,不可以是a-Z
常用字符簇
簇 | 代表 |
---|---|
.点 | 任意字符,不含换行 |
\w | [a-zA-Z0-9] |
\W | \w的补集 |
\s | 空白符,包括\n,\r,\t\v等 |
\S | 非空白符 |
\d | [0-9] |
\D | 非数字 |
单词匹配:
<?php $str="haha ,this is some history book!"; $patt=‘/\bis\b/‘;//以\b开头和以\b结尾,表示陪陪的是单词 preg_match_all($patt,$str,$res);//把匹配到的单词都放到数组res里 print_r($res); ? ?>
集合与补集:
/*给定一组手机号,由[0123456789]组成的,找[01235689],找11个找整个字符串*/ <?php $arr=array(‘1380013800‘,‘13487656887‘,‘434456‘,‘45454353435425‘); $patt=‘/^[01235689]{11}$/‘; /* 或者使用补集 $patt=‘/^[^47]{11}$/‘; */ foreach($arr as $v) { preg_match_all($patt,$v,$res); print_r($res); } ?>
字符范围:
<? $str="020,b2b,b2c,p2p,hello,word,that"; $patt=‘/\b[a-zA-Z]{1,}\b/‘ //$patt=‘/\b[a-zA-Z]+\b/‘ //{1,}的简称就是+ preg_math_all($patt,$str,$res); print_r($res); ?>
字符簇
提取单词:
<? $str=‘tomorrow is another fighting worth day‘; $patt=‘/\W{1,}/‘; print_r(preg_split(($patt,$str)); ?>
去除多余空格:
<? $str=‘tomorrow is another fighting worth day‘; $patt="/\s{1,}/"; echo preg_replace($patt,‘ ‘$str); ?>
找几个
*匹配前面子表达式零次或多次
+匹配前面子表达式一次或多次
?匹配前面子表达式零次或一次
{n}表示匹配n次
{n,}表示至少匹配n次
{n,m}表示匹配n到m次
找出5个字母组成的单词
<?php $str="hahaha woshi maibaode xiaohuajia"; $patt=‘/\b\{a-zA-Z}{5}\b/‘; //$patt=‘/\b\{a-zA-Z}{3,5}\b/‘; //$patt=‘/\b\{a-zA-Z}{5,}\b/‘; preg_match_all($patt,$str,$res); print_s($res); ?>
去除多余的o
<? $str="gooood,goooood,gooooooood"; $patt="/go+d/"; print_r(preg_replace($patt,‘god‘.$str)); ?>
正则中的或者:
//纯英文或者纯数字的,缠在一起的不啊哟 <?php $str="hello o2o 2b9 250"; $patt="/\b[a-zA-Z]+\b|\b[0-9]+\b/"; ?>
匹配苹果的品牌:
<?php $str="ipad,iphone,imac,ipod,iamdhnt,ieju,thinkphp"; $patt="/\bi(pad|phone|mac|pod)\b/"; preg_match_all($patt,$str,$res); print_s($res); ?>
贪婪模式:
<?php $str=‘ksda good goooood good kl s ja dfs dk‘; $patt=‘/\bg.+d$\b/‘; preg_replace($patt,$str,$res)`; print_s($res); ?> //贪婪模式是尽量往后匹配 //默认贪婪模式的话,得到的是:good gooood goood kl s ja d
非贪婪模式
<?php $str=‘ksda good goooood good kl s ja dfs dk‘; $patt=‘/\bg.+?d$\b/‘; preg_replace($patt,$str,$res)`; print_s($res); ?> 匹配的是good,gooood,good
采集手机号:
<?php $str="$str="十八哥,要卖肾,联系方式:13838384384,备用电话:15615612110,QQ:673274456, email:yanshiba@itbool.com" ; $patt=‘/\b1[356789]\d{9}\b/‘; preg_match_all($patt,$str,$res); print_s($res); ?>
后向引用:括号括起来就可以引用了。
<?php $str="txt,hello,high,bom,mun,aifjajla,bhakfjdab,ackjjdaic"; $patt="/\b([a-z])\w+\1\b/";//在后向引用里加括号是可以用的,引用第一个括号 preg_match_all($patt,$str,$res); print_S($res); ?>
后向引用手机中间四位屏蔽
<?php $str="18100638554,13255874455,13854548565"; $patt="/(\d{3})(\d{4})(\d{4})/"; echo preg_replace($patt,‘\1****\3‘,$str); ?>
模式:
模式修饰符在一定程度上影响正则的解析行为
/i,代表正则不区分大小写比如/[a-zA-z]+/----->/[a-z]+/i
/s,单行模式,表示把整个文件看成一个回车
预查:
file_get_contents();把整个文件读入到字符串中
file_put_contents();把整个字符串写入文件中
标签:txt inter ext 表示 pod 一起 区分 ace --
原文地址:https://www.cnblogs.com/Tianwenfeigong/p/14343087.html