正则表达式语法实例详解
本文将详细的介绍正则表达式语法讲解,采用了通用Perl 正则表达式语法,通过PHP语法编写了实例。 通过此文,可以学习到如何写出需求所需要的正则,并且读懂看似神秘复杂的正则表达式。
什么是正则表达式1、正则表达式是一个匹配模式 如何学习正则表达式1、我们要学习正则表达式如何编写? 正则表达式的组成正则表达式由四部分组成:定界符、原子、元字符、模式修正符。
正则表达式语法原子1. 原子可以分为打印字符和非打印字符打印字符即能从键盘上进行输入的。(a-z A-Z 0-9 !@#$%…), 非打印字符指的是空格、换行、Tab等。 2. 所有的数字、所有的字、所有的空白、特殊符号的表达
3.自定义原子表(重要)“[ ]” 定义了一个系列原子 元字符元字符不能单独出现,是用来修饰原子的。
举个栗子:
. 点 代表所有原子,*代表任意个 实例②: 补充: (转义符号 “”)
小括号作用改变原子的优先级$str = "13579335798888234656789";
$reg = "/(my|your)blog/";
if (preg_match($reg,$str,$arr)){
echo "<pre>";
echo "正则<b>{$reg}</b>,和字符串<b>{$str}</b>匹配成功<br/>";
print_r($arr);
echo "</pre>";
} else {
echo "匹配失败";
}
//此时myblog 和 yourblog将都能匹配
小原子变大原子$str = "this is a mysql";
$reg = "/mysql*/"; // 此时匹配的 mysqlllllllllll
$reg2 = "/(mysql)*/";// 此时匹配的 mysql 多个重复
子模式整个表达式是一个大的模式,小括号中是独立的子模式,都可以将内容匹配出来。 反向引用使用前面的子模式 1:表示第一个子模式,2 表示第二个子模式 $str = "2017/01/10"; $reg = "/d{4}(-|/)d{2}1d{2}";
1 表示 和 第一个子模式匹配结果保持一致 ?:取消子模式。这样则可以匹配:2017/01/12 或 2017-01-12,但是不能匹配 2017-01/12 模式修正符模式修正符可以修正表达式的解释,扩充了表达式的功能
常用的模式修正符
举个栗子: $str = "this is a Test abc123456";
$reg = "/^abc/m"; //加上修正符m后便可匹配该字符串
实例②(贪婪,使用*?取消贪婪) $str = "th<b>is</b> is <b>a</b> demo";//打算匹配出this中is
$reg = "/<b>.*?</b>/is"; //取消贪婪后,匹配出this中的is
$reg = "/<b>.*</b>/is";//若未取消贪婪,则匹配的是 is is a,取出了一段。
补充:通过对语法的学习,我们基本上,可以根据需求,一步一步的优化,写出我们想要的正则表达式。并且能够大似看懂正则表达式的意思。(读比写要有难度) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |