PHP教程之正则表达式

正则表达式是一个从左到右匹配目标字符串的模式,具有强大的查询匹配功能。

手册位置:函数参考 > 文本处理 > PCRE

一、常用函数

preg_match

preg_match_all

preg_replace

preg_replace_callback

二、 PCRE模式

1.分隔符 分隔符可以使任意非字母数字、非反斜线、非空白字符。推荐: //

2.元字符

共有两种不同的元字符:一种是可以在模式中方括号外任何地方使用的,另外一种 是需要在方括号内使用的。

\ ^ $ .[] |()?*+{}

[\^-]

3.转义字符

\n 换行

\r 回车

\t 水平制表符

\d 任意十进制数字

\D 任意非十进制数字

\s 任意空白字符

\S 任意非空白字符

\w 任意单词字符

\W 任意非单词字符

锚 ^开始 $结束

4.模式修饰符

i 不区分大小写

S 当一个模式需要多次使用的时候,为了得到匹配速度的提升,值得花费一些时间 对其进行一些额外的分析。如果设置了这个修饰符,这个额外的分析就会执行。

U 非贪婪模式

u 模式和目标字符串都被认为是 utf-8 的

课后练习

去做一个采集网页并且获取

列表页的 链接 标题

详细页的 内容

$str="asdasd_";if(preg_match("/[^\w]+/",$str,$num)){  echo "存在";}else{  echo "不存在";}  $str="中国是世界古老的国度,存在5000年历史文明。中国目前与14亿人口,也是最大的人口国度";//匹配数字preg_match("/[\d]+/",$str,$num);print_r($num);//子模式匹配preg_match("/([\d]+)/",$str,$num);print_r($num);//匹配所有preg_match_all("/[\d]+/",$str,$num);print_r($num);//preg_replace — 执行一个正则表达式的搜索和替换echo $str=preg_replace("/[\d]+/","$0 匹配",$str);echo "";//preg_replace_callback使用回调替换echo preg_replace_callback("/[\d]+/",function($matches){  return $matches[0]*2;},$str);//匹配邮箱 $str="[email protected]";if(preg_match("/\[email protected]\w+\.(\w)+/",$str)){  echo $str."是邮箱";}//匹配中文$str="as中ddd";if(preg_match("/[\x{4e00}-\x{9fa5}]+/u",$str)){  echo $str."含中文";}//过滤非法字符串$preg="美女|写真|女优|混蛋";$str="这家伙真实混蛋";if(preg_match("/$preg/",$str)){  echo $str."含非法字符";}//解析html 匹配出链接和标题$html=‘

这是标题

¥123

这是标题

这是标题

‘;preg_match_all("/<a[^>]*href=\"(.*)\"[^>]*>(.*)<\/a>/iUs",$html,$arr);print_r($arr);//日期匹配// 将文本中的年份增加一年.$text = "April fools day is 04/01/2002\n";$text.= "Last christmas wa

原文地址:https://www.cnblogs.com/wu2198/p/11626150.html

时间: 2024-10-29 14:06:35

PHP教程之正则表达式的相关文章

轻松学习之Linux教程六 正则表达式详解

本系列文章由@超人爱因斯坦出品,转载请注明出处. 作者:超人爱因斯坦    个人网站:http://www.hpw123.net          文章链接:http://hpw123.net/a/Linux/Linuxjichu/2014/1101/104.html     邮箱: [email protected] CSDN:http://blog.csdn.net/u010283694 正则表达式是一些特殊字符的排列,用以查找.替换.删除一些或多行文字字符串,简单的说,正则表达式就是用在字

正则表达式必知必会(修订版)整理教程

正则表达式必知必会(修订版)整理教程 1.   正则表达式入门 1.1  用途:是一种工具,主要用途是搜索变化多端的文本.匹配       到我们想要的信息. 1.2  使用正则表达式:在线测试工具:http://tool.oschina.net/regex/ 2.  匹配单个字符 2.1  匹配纯文本 例子: 文本 Hello,my name is zhaikaishun,please visitmy blog at http://blog.csdn.net/t1dmzks?viewmode=

正则表达式入门教程&amp;&amp;经典Javascript正则表达式----share

前言 例子: ^[email protected]+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下 以下内容摘自 常用JQuery数字类型验证正则表达式整理  和    经典Javascript正则表达式         [  留个备份 :) ~~  ]     常用JQuery数字类型验证正则

正则表达式的语法规则

正则表达式描述了一种字符串匹配的模式,通过这个模式在特定的函数中对字符串进行匹配.查找.替换及分割等操作.正则表达式作为一个匹配的模板,是由原子(普通字符,例如字符a到z).有特殊功能的字符(称为元字符,例如*.+和?等),以及模式修正符三部分组成的文字模式.一个最简单的正则表达式模式中,至少也要包含一个原子,如“/a/”.而且在与Perl兼容的正则表达式函数中使用的模式时,一定要给模式加上定界符,即将模式包含在两个反斜线“/”之间.一个HTML连接的正则表达式模式如下所示: ‘/<a.*?(?

正则表达式中原子的5种类型

原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子.原子是由所有那些未显示指定为元字符的打印和非打印字符组成,所以在这里将其详细划分为五类进行介绍. ①普通字符作为原子 普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符.所有数字等.例如,a——z.A——Z.0——9. ’/5/’        –用于匹配字符串中是否有5这个字符出现 ’/php/’      –用于匹配字符串中是否有PHP字符串出现 ②一些特殊字符和元字符作为原子 任何一个符号都可以作为原

正则表达式介绍及常见用法

正则表达式(Regular Expression),又称正规表示法.常规表示法,在实际的软件开发项目中经常会被使用到.它使用单个字符串来描述.匹配并获取一系列符合某个句法规则的结果. 我将从最基础的部分为大家写这个正则表达式教程. 正则表达式起源   1956年,数学家Stephen Kleene在Warren McCulloch和Walter Pitts早期神经系统工作的基础上,设计出了一个数学符号体系--regular sets(规则的集合),这个东西很快被计算机科学家用于编译器的扫描或词法

正则表达式的元字符

利用Perl正则表达式还可以做另一件有用的事情,这就是使用各种元字符来搜索匹配.所谓元字符,就是用于构建正则表达式的具有特殊含义的字符,例如的“*”.“+”.“?”等.在一个正则表达式中,元字符不能单独出现,它必须是用来修饰原子的.如果要在正则表达式中包含元字符本身,使其失去特殊的含义,则必须在前面加上“\”进行转义.正则表达式的元字符如下表所示. 构造正则表达式的方法和创建数学表达式的方法相似,就是用多种元素符与操作符将小的表达式结合在一起来创建更大的表达式.正则表达式的组件可以是单个的字符.

正则表达式简介

初次接触正则表达式的读者除了感觉它有些繁琐外,还会有一种深不可测的感觉.其实正则表达式就是描述字符排列模式的一种自定义的语法规则,在PHP给我们提供的系统函数中,使用这种模式对字符串进行匹配.查找.替换及分割等操作.它的应用非常广泛.例如,常见的使用正则表达式去验证用户在表单中提交的用户名.密码.E-mail地址.身份证号码及电话号码等格式是否合法:在用户发布文章时,将输入有URL的地方全部加上对应的连接:按所有标点符号计算文章中一共有多少个句子:抓取网页中某种格式的数据等.正则表达式并不是PH

史上最全PHP正则表达式实例汇总

收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link">\2</span>\3', $str); 其中用了三个子模式(每个圆括号中内容为一个子模式),第一个是链接开始标签,第二个是链接文本,第三个是</a