二:字符串和正则表达式_正则表达式的模式修正符
2011-01-02 13:10
363 查看
正则表达式的模式修正符
模式修正符是为正则表达式增强和补充的一个功能,使用在正则之外.
格式:/ 正则 / 模式修正符常用模式修正符有:
i 正则内容在匹配时候不区分大小写(默认是区分的)
m 在匹配首内容或者尾内容时候采用多行识别匹配
s 将转义回车/n取消是为单行匹配如.
x 忽略正则中的空白
A 强制从头开始匹配
D 强制$匹配尾部无任何内容包括/n
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,常用在采集程序上的正则表达式
/正则/i 实例如下
<?php
$mode = "/aaa/";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符i后
<?php
$mode = "/aaa/i";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:AaA
/正则/m 实例如下
<?php
$mode = "/^aaa/";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符m后
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa
/正则/s 实例如下
<?php
$mode = "/444(.*)222/";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败! //由于.是不括/n换行符的任何字符,所以匹配失败了
加上模式修正符s后
<?php
$mode = "/444(.*)222/s";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:444erw 234222 //由于模式修正符su将/n换行符忽略掉换成了空格,所以匹配成功
/正则/x 实例如下
<?php
$mode = "/(/d)//1 3/";
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符x后
<?php
$mode = "/(/d)//1 3/x"; //模式修正符将1与3之间的空格去除并且先算//1再看数字3
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:443
/正则/A 实例如下
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa
加上模式修正符A后
<?php
$mode = "/^aaa/mA"; //模式修正符A强制从头开始匹配,这使行模式修正符m多行匹配失去作用
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
/正则/D 实例如下
<?php
$mode = "/321$/";
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:321
加上模式修正符D后
<?php
$mode = "/321$/D"; //D 强制$匹配尾部无任何内容包括不能有/n
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!";
/正则/U 实例如下
<?php
$mode = "/<(.+)>/";
$string = "sfew<3432>sdds<42423>ffdsf";
if(preg_match($mode,$string,$arr))
echo $arr[0];
else
echo "匹配失败!";
?>
运行结果:<3432>sdds<42423> //这时因为正则表达式在匹配时默认情况下是贪婪匹配
加上模式修正符U后
<?php
$mode = "/<(.+)>/U";
$string = "sfew<3432>sdds<42423>ffdsf";
if(preg_match($mode,$string,$arr))
echo $arr[0];
else
echo "匹配失败!";
?>
运行结果:<3432> //加上模式修正符U后禁止贪婪匹配
模式修正符是为正则表达式增强和补充的一个功能,使用在正则之外.
格式:/ 正则 / 模式修正符常用模式修正符有:
i 正则内容在匹配时候不区分大小写(默认是区分的)
m 在匹配首内容或者尾内容时候采用多行识别匹配
s 将转义回车/n取消是为单行匹配如.
x 忽略正则中的空白
A 强制从头开始匹配
D 强制$匹配尾部无任何内容包括/n
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,常用在采集程序上的正则表达式
/正则/i 实例如下
<?php
$mode = "/aaa/";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符i后
<?php
$mode = "/aaa/i";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:AaA
/正则/m 实例如下
<?php
$mode = "/^aaa/";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符m后
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa
/正则/s 实例如下
<?php
$mode = "/444(.*)222/";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败! //由于.是不括/n换行符的任何字符,所以匹配失败了
加上模式修正符s后
<?php
$mode = "/444(.*)222/s";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:444erw 234222 //由于模式修正符su将/n换行符忽略掉换成了空格,所以匹配成功
/正则/x 实例如下
<?php
$mode = "/(/d)//1 3/";
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符x后
<?php
$mode = "/(/d)//1 3/x"; //模式修正符将1与3之间的空格去除并且先算//1再看数字3
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:443
/正则/A 实例如下
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa
加上模式修正符A后
<?php
$mode = "/^aaa/mA"; //模式修正符A强制从头开始匹配,这使行模式修正符m多行匹配失去作用
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
/正则/D 实例如下
<?php
$mode = "/321$/";
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:321
加上模式修正符D后
<?php
$mode = "/321$/D"; //D 强制$匹配尾部无任何内容包括不能有/n
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!";
/正则/U 实例如下
<?php
$mode = "/<(.+)>/";
$string = "sfew<3432>sdds<42423>ffdsf";
if(preg_match($mode,$string,$arr))
echo $arr[0];
else
echo "匹配失败!";
?>
运行结果:<3432>sdds<42423> //这时因为正则表达式在匹配时默认情况下是贪婪匹配
加上模式修正符U后
<?php
$mode = "/<(.+)>/U";
$string = "sfew<3432>sdds<42423>ffdsf";
if(preg_match($mode,$string,$arr))
echo $arr[0];
else
echo "匹配失败!";
?>
运行结果:<3432> //加上模式修正符U后禁止贪婪匹配
相关文章推荐
- 二:字符串和正则表达式_正则表达式的模式修正符
- 二:字符串和正则表达式_正则表达式的模式修正符
- 二:字符串和正则表达式_正则表达式的模式修正符
- 采用正则表达式获取文本文件中的特定模式字符串
- 正则表达式模式修正符
- php正则表达式的模式修正符和逆向引用使用介绍
- [导入]php正则表达式中的模式修正符
- 正则表达式 模式修正
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- PHP正则表达式模式修正符
- 正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例及原理
- MySQL 字符串模式匹配 扩展正则表达式模式匹配
- 正则表达式模式修正符 比如/esi
- 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
- php 正则表达式(模式修正符)
- 正则表达式---模式修正符
- 具有相同模式的字符串,使用正则表达式组的提取和替换的案例
- php正则表达式的模式修正符和逆向引用使用介绍
- 正则表达式模式修正符 比如/esi
- js 正则表达式中/i,/g,/ig,/gi,/m(模式修正符)的区别和含义