php-练习正则表达式练习-2019年10月17日
一、原子
1.普通字符
实例
<?php $pattem = '/a/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
2.非打印字符
实例
<?php $pattem = '/\n/'; $subject = '111122223333444455\x0d55666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
3.自定义字符
实例
<?php $pattem = '/[a-z]/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
二、元字符
实例
<?php $pattem = '/12./'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk OUYANGKE OUYANGKE zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( | ) 括号里的匹配符,匹配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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例运行效果图
运行效果图
( [ ] ) 括号里的匹配符,匹配方括号内指定的任意一个原子
实例
<?php $pattem = '/[1234]/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
[^ ]括号里的匹配符, 匹配除方括号内指定原子以外的任意一个原子
实例
<?php $pattem = '/[^1234]/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( ^ ) 括号里的匹配符,匹配字符串开始位置,一串字符串,必须从这里开始
实例
<?php $pattem = '/^[a-z]/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( $ ) 括号里的匹配符,匹配字符串结束位置
实例
<?php $pattem = '/[a-z]$/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
三、量词(限定符)
{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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
{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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
{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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( * ) 匹配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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( + ) 匹配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次或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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
四、预定义字符
\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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\W 匹配任意一个除字母/数字/下划线之外的字符
实例
<?php $pattem = '/\W/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\s 匹配任意一个空白字符(非打印)
实例
<?php $pattem = '/\s/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\S 匹配任意一个除空白字符以外的字符
实例
<?php $pattem = '/\S/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
\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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
五、特殊字符
特殊字符需要在符号前面增加\转义
需转义符号: \ * + ? . | ^ $ [ ] ( )
实例
<?php $pattem = '/ [\+\\\*\?\.\|\^\$\[\]\(\)]/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk * + ? . | ^ $ [ ] ( ) ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
六、分组符
( ) 匹配其整体为一个原子[模式单元],即多个原子组成的大原子
实例
<?php $pattem = '/(欧阳克|朱老师)|([0-9])/'; $subject = '我是欧阳克 我是朱老师 asdfsdf212fdhdfgh54674fghjfghjk78907dfghdfghdfgh'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
八、修正符(在界定符后面)
正则表达式有:贪婪模式和懒惰模式
正则表达式默认是贪婪模式
代码示例1:贪婪模式
实例
<?php $pattem = '/ou.*/'; $subject = 'a11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk ouyangke ouyangke zhulaoshi zhulaoshi'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
代码示例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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( 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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( 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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图
( 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); // 输出匹配结果
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行效果图