您的位置 首页 php

PHP正则表达式核心技术完全详解 第10节 模式修正符s和m

[补充知识] 模式修正符 s和m


前面我也写到过模式修正符 在这里给大家再一次的补充以下两个比较特殊的修正符s和m

m 将字符串视为多行

  1. 多行的意思就是把有\n的字符串看做是另起一行,再来匹配正则
  2. 简单的说就是把一个双引号的字符串,把它以\n为基础分割成的独立行
  3. 匹配每一行\n换行符之前的内容 小结 : m修正符的意思就是用来修正^ 和 的作用因为本身和是匹配整个一大段字符串, 而m就是把一大段字符串拆分成每一行来进行匹配, 匹配每一行换行符之前的内容 注意: 字符串如果是单引号是对\n无效的,字符串必须是双引号才能解析里面的\n 代码如下案例:
 $string="h11111\nh22222\nh33333";
 $pattern='/^h\d+$/im';
 preg_match_all($pattern, $string,$result);
 show($result); 

s 将字符串视为单行,换行符会作为普通字符 s如果设置了这个修饰符,模式中的(点号)元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符。这个修饰符等同于 perl 中的/s修饰符。 一个取反字符类比如 a 总是匹配换行符,而不依赖于这个修饰符的设置。 代码案例如下

 //对比1
 $string="an this is eve
 an tzone good
 an good";
 ​
 $pattern='/^(an)/m';
 ​
 ​
 preg_match_all($pattern, $string,$arr);
 show($arr);
 ​
 ​
 //对比2
 $string="an this is eve
 an tzone good
 an good";
 ​
 $pattern='/^(an).+/s';
 ​
 ​
 preg_match_all($pattern, $string,$arr2);
 show($arr2);
 ​
 ​
 //对比3
 $string="an this is eve
 an tzone good
 an good";
 ​
 $pattern='/^(an).+/m';
 ​
 ​
 preg_match_all($pattern, $string,$arr3);
 show($arr3);
 ​ 

文章来源:智云一二三科技

文章标题:PHP正则表达式核心技术完全详解 第10节 模式修正符s和m

文章地址:https://www.zhihuclub.com/78023.shtml

关于作者: 智云科技

热门文章

网站地图