正则表达式小结

 

 

/*
* 讲讲元字符 . 的用法
  .   任何字符的一次
  .?  任何字符的一次或者0次
  .+  任何字符的一次或者以上  每次都可以是不同的值譬如 abc
  .*  任何字符的0次或者以上   每次都可以是不同的值譬如 abc
*/
{i} 代表任何字符

$mode = '/a.b/';  $str = 'a{i}b'; 

$mode = '/a.?b/'; $str = 'a{i}b'; 或者  $str = 'ab';

$mode = '/a.+b/'; $str = 'a{i}。。。b';

$mode = '/a.*b/'; $str = 'a{i}。。。b'; 或者  $str = 'ab';
<pre class="php" name="code">/*
* 讲讲元字符 \b 的用法
* 匹配单词的边界  空格或者特殊字符(_不属于特殊字符)
*/

$mode = '/\bis\b/';  $str = 'where is';    ok

$mode = '/\bis\b/';  $str = 'where.is ';    ok

$mode = '/\bis\b/';  $str = 'where_is ';    error

$mode = '/\bis\b/';  $str = 'where.is ';    ok
<pre class="php" name="code">/*
* 讲讲元字符 ( )  的用法
* 合并整体匹配 放入内存,可使用\1 \2  类似  获取
*/

$mode = '/l(abc)l\\1/';  $str = 'labclabc';   
if (  preg_match($mode, $str, $arr) ) {
	echo '匹配成功';
	print_r($arr);
}
结果:
匹配成功
Array
(
    [0] => labclabc
    [1] => abc
)

/*
* 讲讲元字符 ( )  的用法
* 讲一个例子 譬如 年月  可以是 2014-12-12 或者 2014/12/12 或者 2014\12\12  或者 20141212
*/
 
$str = '2014-12-12';
$mode = '/2014(.*)12\\1(12)/s';  
$str = '2014-12-12';   
if (  preg_match($mode, $str, $arr) ) {
	echo '匹配成功';
	print_r($arr);
}
结果:
匹配成功
Array
(
    [0] => 2014-12-12
    [1] => -
    [2] => 12
)
<pre class="php" name="code">$mode = '/\d{4}(.*)\d{1,2}\\1\d{1,2}/s';  
$str = '2014-12-12';  
if (  preg_match($mode, $str, $arr) ) {
	echo '匹配成功';
	print_r($arr);
}
结果:
匹配成功
Array
(
    [0] => 2014-12-12
    [1] => -1
)
 

 

 

$mode = '/{(.*)}/U';  
$str = 'adk{who}oeo{is}rot{it}yor';  
preg_match_all($mode,$str,$arr);
print_r($arr);
结果:
Array
(
    [0] => Array
        (
            [0] => {who}
            [1] => {is}
            [2] => {it}
        )

    [1] => Array
        (
            [0] => who
            [1] => is
            [2] => it
        )

)


 

$mode = '/{(.*)}/U';  
$str = 'adk{who}oeo{is}rot{it}yor';  
echo preg_replace($mode, '中文', $str);
结果: adk中文oeo中文rot中文yor 


 

$mode = array('/{\w{3}}/', '/{\w{2}}/'); 
$mat = array('我是三个单词', '我是二个单词');
$str = 'adk{who}oeo{is}rot{it}yor'; 
echo preg_replace($mode, $mat, $str);
输出:
adk我是三个单词oeo我是二个单词rot我是二个单词yor 
 
$mode ='/([a-z])/i'; 
$str = '111a1111A111111b11'; 
echo preg_replace($mode, "md5(<a target=_blank href="file://\\1">\\1</a>)", $str);
输出:
111md5(a)1111md5(A)111111md5(b)11
 
$mode ='/([a-z])/ie'; 
$str = '111a1111A111111b11'; 
echo preg_replace($mode, "md5(<a target=_blank href="file://\\1">\\1</a>)", $str);
输出:1110cc175b9c0f1b6a831c399e26977266111117fc56270e7a70fa81a5935b72eacbe2911111192eb5ffee6ae2fec3ad71c777531578f11
 


 

小结:

小结:1.替换正则表达式 。2.正则表达式数组。3.在执行过程中通过修正符 e,把替换的内容运算后在替换

备注:preg_replace 函数 还有第四个参数 limit,替换的次数  preg_replace($mode,$mat,$str,$limit),limit如果是 1 的话就是替换一次就会停止

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值