php-练习正则表达式练习-2019年10月17日

2019年10月22日 13:04:50阅读数:944博客 / 渊的博客 / PHP基础

一、原子

1.普通字符

实例

<?php

  $pattem = '/a/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

a.png

2.非打印字符

实例

<?php

  $pattem = '/\n/';
    $subject = '111122223333444455\x0d55666677778888999900000
    aaabbbcccdddeeefffggghhhiiijjjjkkkk';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

非打印字符.png

3.自定义字符

实例

<?php

  $pattem = '/[a-z]/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

 

自定义字符.png

二、元字符

实例

<?php

   $pattem = '/12./';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk OUYANGKE OUYANGKE zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

原字符.png

 

( | ) 括号里的匹配符,匹配2个或多个分支

实例

<?php

$pattem = '/12|67/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例运行效果图

运行效果图

分支匹配.png

( [ ] ) 括号里的匹配符,匹配方括号内指定的任意一个原子

实例

<?php

 $pattem = '/[1234]/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

指定数字.png

 [^ ]括号里的匹配符, 匹配除方括号内指定原子以外的任意一个原子


实例

<?php

 $pattem = '/[^1234]/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

除指定以外的其它字符.png

( ^ ) 括号里的匹配符,匹配字符串开始位置,一串字符串,必须从这里开始


实例

<?php

$pattem = '/^[a-z]/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

字母a开头.png

( $ ) 括号里的匹配符,匹配字符串结束位置


实例

<?php

$pattem = '/[a-z]$/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

匹配结束位置.png


三、量词(限定符)

{n} 表示前面原子出现n次


实例

<?php

 $pattem = '/[0-9]{3}/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

连续出现次数.png

{n,} 表示前面原子出现不少于n次


实例

<?php

 $pattem = '/[0-9]{1,}/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

不少于1次.png

{n,m} 表示前面原子至少出现n次,最多出现m次


实例

<?php

$pattem = '/[0-9]{1,3}/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

出现至少N次.png

( * ) 匹配0次、1次或多次前面原子


实例

<?php

 $pattem = '/[0-9]*/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

0次一次或多资.png

( + ) 匹配1次或多次前面原子


实例

<?php

$pattem = '/[0-9]+/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

一次或多次.png

(?) 匹配0次或1次前面原子


实例

<?php

 $pattem = '/[0-9]?/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

0次或一次.png

四、预定义字符

\d 匹配任意一个十进制数

等价于 [0-9]


实例

<?php

  $pattem = '/\d/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

数字.png

\D 匹配任意一个除十进制以外的字符

等价于 [^0-9]


实例

<?php

  $pattem = '/\D/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

除十进制以外的数.png

\w 匹配任意一个字母/数字/下划线字符

等价于 [0-9a-zA-Z_]

 

实例

<?php

  $pattem = '/\w/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

大小写字母及数字.png

\W 匹配任意一个除字母/数字/下划线之外的字符

 

实例

<?php

 $pattem = '/\W/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

除大小写字母及数字.png

\s 匹配任意一个空白字符(非打印)

 

实例

<?php

 $pattem = '/\s/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

匹配空白字符.png

\S 匹配任意一个除空白字符以外的字符

实例

<?php

$pattem = '/\S/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

非空白以外的其它字符.png

\b 匹配单词边界

实例

<?php

 $pattem = '/ouyangke\b/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

匹配单词边界.png

\B 匹配除单词边界以外的部分

实例

<?php

$pattem = '/yang\B/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

除单词边界以外的部分.png

五、特殊字符

特殊字符需要在符号前面增加\转义

需转义符号: \ * + ? . | ^ $ [ ] ( )

实例

<?php

$pattem = '/ [\+\\\*\?\.\|\^\$\[\]\(\)]/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk * + ? . | ^ $ [ ] ( ) ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

特殊字符.png

六、分组符

( ) 匹配其整体为一个原子[模式单元],即多个原子组成的大原子

 

实例

<?php

$pattem = '/(欧阳克|朱老师)|([0-9])/';
    $subject = '我是欧阳克 我是朱老师 asdfsdf212fdhdfgh54674fghjfghjk78907dfghdfghdfgh';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

分组符.png

八、修正符(在界定符后面)

 

正则表达式有:贪婪模式和懒惰模式

正则表达式默认是贪婪模式

代码示例1:贪婪模式

实例

<?php

 $pattem = '/ou.*/';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

取消贪婪模式.png

 

代码示例2:( U ) 表示取消贪婪模式

    

实例

<?php

 $pattem = '/ou.*/U';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

贪婪.png

( i ) 表示和模式进行匹配时忽略大小写

实例

<?php

 $pattem = '/ouyangke/i';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk OUYANGKE OUYANGKE ZHULAOSHI ZHULAOSHI';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

i忽略大小写.png

( s ) 被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。

实例

<?php

 $pattem = '/OUYANGKE./s';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk\n OUYANGKE
OUYANGKE
ZHULAOSHI ZHULAOSHI';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

换行符看成普通字符.png



( x ) 模式中的空白忽略不计

实例

<?php

  $pattem = '/   0
    0
    0/x';
    $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk\n OUYANGKE OUYANGKE ZHULAOSHI ZHULAOSHI';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);   // 输出匹配次数
    var_dump($matches); // 输出匹配结果

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图

忽略模式空白.png

批改状态:合格

老师批语:preg_match_all($pattem,$subject,$matches);函数的每个参数,它的类型, 函数的返回值, 一定要记住

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
    渊的博客
    博文
    27
    粉丝
    0
    评论
    0
    访问量
    20968
    积分:0
    P豆:56