正则表达式详解

Posted 极客小寨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式详解相关的知识,希望对你有一定的参考价值。

正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语言基本上都有正则表达式,如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\]



二、正则表达式基本语法




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


如果你有更好的技术干货和建议,欢迎加入QQ[689112212]、微信【极客小寨】拍砖!一起探讨!







以上是关于正则表达式详解的主要内容,如果未能解决你的问题,请参考以下文章

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式详解

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

python 正则详解

Java正则表达式详解+练习