正则表达式详解

preg.jpg

正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语言基本上都有正则表达式,如JavaScript、java等。其实,只有了解一种语言的正则使用,其他语言的正则使用起来,就相对简单些。文本主要讲解常用的正则表达式函数和正则表达式基本语法。

一、常用的正则表但是函数

preg_match($pattern,$subject,[array&$matches])

preg_match_all($pattern,$subject,array&$matches)

preg_match($pattern,$subject,[array &$matches]) --进行正则表达式匹配

preg_match_all($pattern,$subject,array &$matches) --进行正则表达式匹

实例代码:

$pattern = '/[0-9]/';
$subject = 'weuyr3ui76as83s0ck9';
$m1 = $m2 = array();

$t1 = preg_match($pattern, $subject,$m1);
$t2 = preg_match_all($pattern, $subject,$m2);

print_r($m1);
echo "<br><pre>";

print_r($m2);
echo $t1.'||'.$t2;

结果:

Array ( [0] => 3 ) 
    Array
    (
        [0] => Array
            (
                [0] => 3
                [1] => 7
                [2] => 6
                [3] => 8
                [4] => 3
                [5] => 0
                [6] => 9
            )   
    )
    1||7;

preg_replace($pattern, $replacement, $subject)

preg_filter($pattern, $replacement, $subject)

preg_replace($pattern, $replacement, $subject) --执行正则表达式的搜索和替换

preg_filter($pattern, $replacement, $subject) --执行正则表达式的搜索和替换

实例代码:

// $pattern = '/[0-9]/';
    // $subject = 'weuyr3ui76as83s0ck9';
    // $replacement = "小学生";

    // $str1 = preg_replace($pattern, $replacement, $subject);
    // $str2 = preg_filter($pattern, $replacement, $subject);
    
    // echo "<pre>";
    // print_r($str1);
    // echo "<br>";
    // print_r($str2);

    /*        ********************输出的结果***********************        
        weuyr小学生ui小学生小学生as小学生小学生s小学生ck小学生
        weuyr小学生ui小学生小学生as小学生小学生s小学生ck小学生 
    */

    // $pattern = array('/[0123]/','/[456]/','/[789]/');
    // $subject = 'weuyr3ui76as83s0ck9';
    // $replacement = array("小","学","生");

    // $str1 = preg_replace($pattern, $replacement, $subject);
    // $str2 = preg_filter($pattern, $replacement, $subject);

    // echo "<pre>";
    // print_r($str1);
    // echo "<br>";
    // print_r($str2);

    /*        ********输出的结果********       
        weuyr小ui生学as生小s小ck生 
        weuyr小ui生学as生小s小ck生 
    */

    //*********************区别*********************

    $pattern = array('/[0123]/','/[456]/','/[789]/');
    $subject = array('weuy','r3ui','76as83','s0ck9');
    $replacement = array("小","学","生");

    $str1 = preg_replace($pattern, $replacement, $subject);
    $str2 = preg_filter($pattern, $replacement, $subject);
    echo "<pre>";
    print_r($str1);
    echo "<br>";
    print_r($str2);


    /*

结果:

Array
    (
        [0] => weuy
        [1] => r小ui
        [2] => 生学as生小
        [3] => s小ck生
    )Array
    (
        [1] => r小ui
        [2] => 生学as生小
        [3] => s小ck生
    )

注意:

preg_replave() --不管字符串有没有发生变化全都会保留。

preg_filter() --只会保留发生过替换的字符串。

preg_grep()

preg_grep() --返回匹配模式的数组条目(只做匹配,不做替换)

实例代码:

$pattern = '/[0-9]/';
$subject = array('weuy','r3ui','76as83','s0ck9');

$arr = preg_grep($pattern, $subject);
echo "<pre>";

print_r($arr);

结果:

Array
    (
        [1] => r3ui
        [2] => 76as83
        [3] => s0ck9
    )

preg_split($psttern,$subject)

preg_split($psttern,$subject) --通过一个正则表达式分隔字符串

实例代码:

$pattern = '/[0-9]/';
$subject = '小2学3生,7约吗?';

$arr = preg_split($pattern, $subject);

echo "<pre>";
print_r($arr);

结果:

Array
        (
            [0] => 小
            [1] => 学
            [2] => 生,
            [3] => 约吗?
        )

preg_quote($str)

preg_quote($str) --正则运算符转义

实例代码:

$str = 'qwer{asdf}[1234]';

$str= preg_quote($str);

echo $str;

结果:

qwer\{asdf\}\[1234\]

二、正则表达式基本语法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为比较重要,所以还是单独拿出来作一篇文章,好好学习一下。 正则表达式:Regular expression 定义...
    齐舞647阅读 1,011评论 3 7
  • JavaScript-正则表达式 记录这篇高大上的正则表达式,其实接触很多,但是实际项目里面感觉运用的比较少呀,用...
    明明三省阅读 3,059评论 0 24
  • 几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
    没技术的BUG开发攻城狮阅读 4,615评论 0 23
  • 我以为时间是静止的。 年少的时候总是觉得日子过的很慢,难熬的无数个日日夜夜仿佛无形的网笼罩着自己,幻想着自己能够有...
    犀言阅读 423评论 0 0
  • 对于学车,我就只想爆粗。 为什么这么多科目? 为什么学车编制这么乱? 为什么我的实践能力这么差? …… 仅仅是个科...
    阿飞飞Q阅读 220评论 2 4