当前位置:首页 > PHP教程 > 正文内容

正则表达式中模式修正符作用详解_php教程,正则表达式

搜教程4年前 (2020-01-28)PHP教程171

PHP自定义函数+系统函数库(代码示例)_php教程

mt_rand()是更好的随机数生成器,因为它跟rand()相比播下了一个更好地随机数种子;而且性能上比rand()快4倍......

正则表达式中模式修正符作用详解(i、g、m、s、x、e)

什么是模式修正符?

1, 模式修正符就是几个字母,我们在每个正则表达式中可以一次使用一个,也可以连续使用多个,每一个具一定的意义。

2, 模式修正符是对整个正则表达式调优使用,也可以说是对正则表达式功能的扩展。

还记得正则表达式的那个公式吗?'/原子和元字符/模式修正符',其中正斜线为边界符。

模式修正符的构成

模式修正符就是字母,只不过这些在模式修正符的应用之中有特殊的含义。下面我来看看都有哪些模式修正符,请看下表:

由于i表示匹配不区分大小写,在下面的示例中,我们不再进行演示,我们来看一下其他模式修正符的示例。

1,模式修正符m。

代码如下:

<?php 
$pattern = '/^abc/m'; 
$string = 'bcd 
abc 
cba'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

匹配结果是成功的。注意:我们在使用模式修正符m的时候,将匹配字符串看成是多行而不是默认的单行,所以任何一行只要是以abc开头,就匹配成功。但是,如果能匹配的行前面有空格的话,就不能匹配了!除非修改正则表达式的匹配模式。

2,模式修正符s。

代码如下:

<?php 
$pattern = '/a.*c/s'; 
$string = 'adsadsa 
c'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

这次的匹配记过也是成功的。如果你将上例中的模式修正符s去掉的话,匹配就会失败。因为模式修正符s将匹配字符串看作是单行的,所以这个时候,元字符中的"."就可以表示换行符号了。

3,模式修正符x。

php基础知识考察点之正则表达式_php教程

1.正则表达式的作用:分割,查找,匹配,替换 字符串;2.分隔符:正斜线(/),hash符(#)以及取反符号(~);3.通用原子:\d \D \s \S \w \W ...

代码如下:

<?php 
$pattern = '/a c/x'; 
$string = 'a c'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

这次的匹配结果是失败的。因为我们使用模式修正符x取消了模式中的空格。注意:我们无法使用模式修正符取消\s表示的空白。

4,模式修正符A。

代码如下:

<?php 
$pattern = '/ac/A'; 
$string = 'acahgyghvbm'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

正则表达式表示的含义是匹配以ac开头的字符串,结果成功。

模式修正符Z表示的是以字符串结尾的匹配,和A的用法是一样的,我们不再进行演示。

5,模式修正符U。

这个模式修正符是十分重要的!在正则表达式中,其本身是“贪婪”的。那什么是贪婪模式呢?贪婪模式的意思就是说,正则表达式默认会在查找到第一个匹配后,继续尝试后面的匹配,如果能找到匹配,则匹配最大的范围字符串。但有的时候这并不是我们想要的结果,所以我们需要取消贪婪模式。

我们还是先看一个贪婪模式的例子:

代码如下:

<?php 
$pattern = '/<b>.*<\/b>/'; 
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

这个实例的本意是匹配welcome,但是结果却匹配了welcome to phpfuns整个字符串(注意我们的字符串'welcome to phpfuns',其开头和结尾正好构成了正则表达式的模式匹配,所以匹配成功),这就是正则表达式的贪婪模式。当然,这不是我们要的结果。

取消贪婪模式

我们可以使用模式修正符U和元字符?两种方式取消正则表达式的贪婪模式。

模式修正符U取消贪婪模式

代码如下:

<?php 
$pattern = '/<b>.*<\/b>/U'; 
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

元字符?取消贪婪模式

代码如下:

<?php 
$pattern = '/<b>.*?<\/b>/'; 
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas'; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

以上就是正则表达式中模式修正符作用详解的详细内容,更多请关注ki4网其它相关文章!

PHP识别文件伪装(文件上传)_php教程

文件上传时候需要验证上传的文件是否合法,文件伪装如何识别?一个简单测试:把txt文件后缀直接改成jpg;上传。

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/17045.html

标签: 正则表达式
分享给朋友:

“正则表达式中模式修正符作用详解_php教程,正则表达式” 的相关文章

file函数怎样用【php教程】,file函数

file函数怎样用【php教程】,file函数

php file()函数用于把全部文件读入一个数组中。 php file()函数 语法 作用:把全部文件读入一个数组中。 语法: file(path,include_path,context) 参数: path 必须。划定要读取的文件。 include_path 可选。假如也想...

PHP希尔(Shell)排序算法的完成(代码详解)【php教程】,PHP希尔(Shell)排序算法

PHP希尔(Shell)排序算法的完成(代码详解)【php教程】,PHP希尔(Shell)排序算法

希尔(Shell)排序或Shell的要领,是一种当场比较排序。它能够被看做是冒泡排序或插入排序的推行。该要领起首对相互相距很远的元素对举行排序,然后逐渐减少要比较的元素之间的差异。从相距很远的元素最先,能够比近邻交流更快地挪动一些位置不合适的元素。 Shell排序示例以下: 第一次遍...

mvc形式有哪些优缺点【php教程】,mvc模式

mvc形式有哪些优缺点【php教程】,mvc模式

MVC形式的长处有:分工明白,重用性高而且模子具有可移植性,能够许可替代视图和控制器对象;瑕玷是没有明白的定义,下降了体系的机能以及增添了代码事情量 MVC能够看做是一个架构或许说是一个设想形式,它就是强制性使应用顺序的输入,处置惩罚和输出离开。将一个应用顺序分为三个部份分别为:模子,视图和控...

PHP中怎样完成回调?【php教程】,PHP,回调

PHP中怎样完成回调?【php教程】,PHP,回调

在PHP中,回调是一个可挪用范例的函数对象/援用;回调(或可挪用)变量能够用作函数、对象要领和静态类要领。完成回调有多种要领,下面本篇文章就来引见一些,愿望对人人有所协助。【视频教程引荐:PHP教程】 1、规范回调 示例:运用call_user_func()函数挪用一个函数,个中包括的参...

如安在Ubuntu 18.04和16.04上装置PHP(7.3,7.2和7.0)?【php教程】,Ubuntu,安装PHP7.3,PHP7.2,PHP7.0)

如安在Ubuntu 18.04和16.04上装置PHP(7.3,7.2和7.0)?【php教程】,Ubuntu,安装PHP7.3,PHP7.2,PHP7.0)

PHP 7.3是PHP最新的稳固版本,假如你想装置特定版本的PHP,那末本文将对你有所协助。本篇文章就将给人人引见怎样运用PPA在Ubuntu 18.04、16.04上装置PHP 7.3、7.2、7.1和PHP 7.0。(PPA全称Personal Package Archives即个人软件包文档)...

thinkphp中运用AOP切面编程疾速考证数据的要领引见【php教程】,thinkphp5,php

thinkphp中运用AOP切面编程疾速考证数据的要领引见【php教程】,thinkphp5,php

本篇文章给人人带来的内容是关于thinkphp中运用AOP切面编程疾速考证数据的要领引见,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 1) 起首 检察一下我们的目次组织 2)运用寻常的写法来组织一下我们的考证 这里重要分四步在走,相对于运用自力考证器或许挨个数据...