正则表达式的用法 php,PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)...

本文实例讲述了PHP正则表达式基本用法。分享给大家供大家参考,具体如下:

Demo1.php

//尝试着写第一个正则表达式

//第一个参数,表示模式(就是和字符串去比较,匹配)

//第二个参数,表示字符串

//如果整个函数模式和字符串比较后匹配了,那么返回真(true)1,否则返回假(false)0

//什么叫匹配,就是一个一个的比较过去

//按照什么规则??按照模式来匹配

//只要模式全部通过,那么就通过

//匹配和相等是两个概念

//因为目前的模式是一个整体,php

//所以,字符串只要有连在一起的 php 三个字符,不管怎样的字符串都能匹配

$mode = '/php/'; //规则模式

$string = 'fsdfsdfsdphpfsdfs'; //字符串

//echo preg_match($mode,$string);

if( preg_match($mode,$string)){

echo '匹配';

}else{

echo '不匹配';

}

//echo preg_match('/php/','php');

// if('a'=='a'){

// echo '相等';

// }else {

// echo '不相等';

// }

?>

Demo2.php

//什么叫前导,前面的一个字符

//+ 号的前导字符就是 h

//h+ 的意思是,至少包含一个 h

//+ 号的意思

//$mode = '/ph+p/'; //规则模式

//h* 的意思是,零个或者多个 h

//* 号虽然可以是零个,但是前导字符不能更改,更改了,就不匹配了

//$mode = '/ph*p/'; //规则模式

//h? 的意思是,零个或者一个 h

//? 多个前导字符不行

//$mode = '/ph?p/'; //规则模式

//.的意思是,任意一个字符,所以,两个点,就是任意两个字符

//$mode = '/p.p/'; //规则模式

//.* 表示前导任意字符,并且零个或者多个

//$mode = '/p.*p/'; //规则模式

//h{3} 表示,前导必须是3 个,

//$mode = '/ph{3}p/'; //规则模式

//h{3,5}表示,前导必须是 3 到 5 个

//$mode = '/ph{3,5}p/'; //规则模式

//h{3,} 表示,前导至少 3 个 h

//$mode = '/ph{3,}p/'; //规则模式

//$符号,一般加在模式的字符串尾巴上

//表示从尾巴开始匹配

//$mode = '/php$/'; //规则模式

//^表示,从开头进行匹配

//$mode = '/^php/'; //规则模式

//^ 和 $ 一起用的,基本上不要用正则了,直接用 == 号即可

//$mode = '/^php$/'; //规则模式

//| 是一个条件选择符,如果有其中一个,即可匹配。

//$mode = '/php|asp/'; //规则模式

//()

$mode = '/(this) (is) (php|asp)/'; //规则模式

$string = 'this is php'; //字符串

//echo preg_match($mode,$string);

if( preg_match($mode,$string)){

echo '匹配';

}else{

echo '不匹配';

}

?>

Demo3.php

//元子符

//[]中括号,是一种正则里的语法

//里面的东西表示任意一个即可

//[a-z] 表示 26 个字母中,随便其中一个

//$mode = '/[a-z]/'; //规则模式

//[0-9] 表示 0-9,随便其中一个

//$mode = '/[0-9]/'; //规则模式

//[asv] 其中一个

//$mode = '/[asv]/'; //规则模式

//[a-zA-Z0-9_] 表示其中一个匹配 [a-zA-Z0-9_] 中的任意一个

//$mode = '/[a-zA-Z0-9_]/'; //规则模式

//不是在开头匹配行首的^,而是中括号里的 ^

//[^] 表示匹配除了abc 外都能匹配的字符串

//$mode = '/[^abc]/'; //规则模式

//为了让人们使用更加的方便,\w 代表 [a-zA-Z0-9_]

//$mode = '/[\w]/'; //规则模式

//\W 正好和 \w相反

//$mode = '/[\W]/'; //规则模式

//\d 和 [0-9] 一样

//$mode = '/\d/'; //规则模式

//\D 和 [^0-9] 一样

//$mode = '/\D/'; //规则模式

//\s匹配任何空白字符

//$mode = '/\s/'; //规则模式

//\S不包含空白字符

//$mode = '/\S/'; //规则模式

//\b表示到达了单词的边界,如果没有到达就不匹配,边界可以理解为空格

//$mode = '/php\b/'; //规则模式

//\B 表示没有到达边界

//$mode = '/php\B/'; //规则模式

//因为 + 号是正则里的特殊字符

//如果要匹配特殊字符的话,必须加上 \

$mode = '/p\+p/'; //规则模式

$string = 'p+p'; //字符串

if( preg_match($mode,$string)){

echo '匹配';

}else{

echo '不匹配';

}

?>

Demo4.php

//修饰符

//修饰符放在 // 的外面

//i 表示不区分大小写

// $mode = '/php/i'; //规则模式

// $string = 'PHP'; //字符串

//m 表示匹配首尾的时候,如果遇到换行,也应该承认是结尾

// $mode = '/php$/m'; //规则模式

// $string = "this is a php\n ,is goods"; //字符串

//x 表示忽略掉规则模式中的空白字符

// $mode = '/php/x'; //规则模式

// $string = 'ph p'; //字符串

//A 表示必须从头开始匹配

$mode = '/php/A'; //规则模式

$string = 'phpfsdfd'; //字符串

if( preg_match($mode,$string)){

echo '匹配';

}else{

echo '不匹配';

}

?>

Demo5.php

//搜索数组中的相匹配的字符串

//preg_grep() 函数

$language = array('php','asp','jsp','python','ruby');

//找出最流行的 3p 语言

//这三门语言的匹配共同点是什么,最后结尾都是 p

//结尾匹配 p /p$/

//$mode = '/p$/';

//打印出开头为 p 的语言

$mode = '/^p/';

//python 蟒蛇语言,在国外有取代 PHP 的传闻

print_r(preg_grep($mode,$language));

?>

Demo6.php

//搜索模式,最后返回的是真或者是假,1,10

echo preg_match('/php[1-6]/','php5');

?>

Demo7.php

//电子邮件的小案例

//通过拆分的方法分组

$mode = '/^([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})$/';//模式不能缺少

$string = 'oneStopWeb@163.com';

if(preg_match($mode,$string)){

echo '电子邮件合法';

}else{

echo '电子邮件不合法';

}

?>

Demo8.php

//匹配全局正则

//将字符串的所有匹配得到的结果放到一个数组变量里

preg_match_all('/php[1-5]/','php5fsdfsdphp6fsdfsdfphp4',$out);

print_r($out);//Array ( [0] => Array ( [0] => php5 [1] => php4 ) )

echo $out[0][0];//php5

?>

Demo9.php

//定界定则

echo preg_quote('PHP is $150'); //PHP is \$150

?>

Demo10.php

//搜索匹配的结果,然后替换掉

//第一个参数,存的是正则模式

//第二参数,放的是替换掉的字符串

//第二个参数,字符

//将第三个参数的字符串的 php5,php6 替换成了 oneStopWeb

echo preg_replace('/php[1-6]/','oneStopWeb','This is a php5,This is a php6');

//This is a oneStopWeb,This is a oneStopWeb

?>

Demo11.php

//贪婪和分组获取的案例,ubb

//我要将这个 [b][/b] 换成

//注意一个问题,这个时候的 [] 中括号,是字符串的括号,而不是语法[a-z]

//. 表示匹配任意字符一个,加上一个 * 号表示匹配零个或者多个

//用括号分为三组,那么第一组就是\1,第二组就是\2,第三组就是\3

//目前只有1 组,\1

//第一问题,第一个[b]和最后一个[/b]匹配了

//解决贪婪匹配。

$mode = '/(\[b\])(.*)(\[\/b\])/U';//U 禁止贪婪

$replace = '\2';

$string = 'This is a [b]php5[/b],This is a [b]php6 [/b]';

//echo $string;

echo preg_replace($mode,$replace,$string);

?>

Demo12.php

//用正则表达来进行分割

//如果没有 [] 符号,就表示,要同时满足

print_r(preg_split('/[.@]/','oneStopWeb@163.com'));

//Array ( [0] => oneStopWeb [1] => 163 [2] => com )

?>

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

希望本文所述对大家PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值