PHP:正则表达式-元字符

元字符:

? 1个或0个前面的原子.


**

<?php 
// 原子

$str="li.nuG..F.F___ 666y _ ";
$ptn='/.?/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>

**

Array
(
    [0] => Array
        (
            [0] => l
            [1] => i
            [2] => .
            [3] => n
            [4] => u
            [5] => G
            [6] => .
            [7] => .
            [8] => F
            [9] => .
            [10] => F
            [11] => _
            [12] => _
            [13] => _
            [14] =>  
            [15] => 6
            [16] => 6
            [17] => 6
            [18] => y
            [19] =>  
            [20] => _
            [21] =>  
            [22] => 
        )

)

* 任意多个字符(0、1或多个前面的原子).


星号匹配任意多个前面的原子

<?php 
// 原子

$str="li.nuG..F.F___ 666y _ ";
$ptn='/.*/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>

**

Array
(
    [0] => Array
        (
            [0] => li.nuG..F.F___ 666y _ 
            [1] => 
        )

)

+ 1个或多个前面的原子.


加号匹配1个或多个前面的原子

<?php 
// 原子

$str="li.nuG..F.F___ 666y _ ";
$ptn='/.+/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>

**

Array
(
    [0] => Array
        (
            [0] => li.nuG..F.F___ 666y _ 
        )

)

*和+和?的区别


**

<?php 
// 原子

$str="ab";
$ptn='/a+/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>

**

Array
(
    [0] => Array
        (
            [0] => a
        )

)


**

<?php 
// 原子

$str="ab";
$ptn='/a*/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>

**

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 
            [2] => 
        )

)

| 或者


**

<?php 
// 原子

$str="linux and php is and linux very much";
$ptn='/linux|php|and/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => linux
            [1] => and
            [2] => php
            [3] => and
            [4] => linux
        )

)


^ 以什么开头


**

<?php 
// 原子

$str="linua and php is and linub very much linuc";
$ptn='/^linu./';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => linua
        )

)


$ 以什么结尾


**

<?php 
// 原子

$str="linua and php is and linub very much linuc";
$ptn='/linu.$/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => linuc
        )

)


\b 单词边界


**

<?php 
// 原子

$str="linua and p2p isp3plinuc";
$ptn='/\ba.d\b/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => and
        )

)


\B 非单词边界


**

<?php 
// 原子

$str="linua and p2p isp3plinuc";
$ptn='/\Bp.p\B/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => p3p
        )

)


[^] 取非


**

<?php 
// 原子

$str="p2p isp3plinuc";
$ptn='/[^1-5]/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => p
            [1] => p
            [2] =>  
            [3] => i
            [4] => s
            [5] => p
            [6] => p
            [7] => l
            [8] => i
            [9] => n
            [10] => u
            [11] => c
        )

)


{} 多少个前面的原子


**

<?php 
// 原子

$str="13623614403";
$ptn='/^\d{11}$/';

preg_match_all($ptn,$str,$arr);

echo '<pre>';
print_r($arr);
echo '</pre>';
 ?>



**

Array
(
    [0] => Array
        (
            [0] => 13623614403
        )

)


() 单元匹配


preg_replace进行正则替换

<?php 
// 原子

$str="2017-03-20";
$ptn='/\d+/';
$rep='linux';

$str2=preg_replace($ptn,$rep,$str);

echo $str2;
 ?>

**

linux-linux-linux 

preg_replace单元匹配

<?php 
// 原子

$str="2017-03-20";
$ptn='/^(\d+)-(\d+)-(\d+)$/';
$rep='$1/$2/$3';

echo preg_replace($ptn,$rep,$str);
 ?>





**

2017/03/20 

两个反斜线相等于$

<?php 
// 原子

$str="2017-03-20";
$ptn='/^(\d+)-(\d+)-(\d+)$/';
$rep='\\2=\\3=\\1';

echo preg_replace($ptn,$rep,$str);
 ?>

**

03=20=2017 

**


**



**


**



**


**



**


**


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值