PHP正则表达式之定界符和原子介绍


Posted in PHP onOctober 05, 2012

本节内容我们将介绍PHP中正则 表达式的基础语法:定界符和原子。内容包含了定界符的定义以及原子的定义和构成等等。其中原子的构成十分灵活,以便满足我们对处理字符串的需求。在这之 前,我们需要先了解一个正则表达式处理函数preg_match()来进行测试,以方便我们教程示例的进行。

先来看一下正则表达式的定界符、正则表达式的构成以及preg_match()函数:

1,正则表达式的定界符。

除了字母、数字和反斜线\以外的任何字符都可以为定界符号,比如 | |、//、{}、!!等等,但是需要注意,如果没有特殊需要,我们都使用正斜线//作为正则表达式的定界符号。

2,正则表达式的构成。

我们看一下这个公式:/原子和元字符/模式修正符

也就是说,正则表达式的原子和元字符都放在定界符之间,而模式修正符放在定界符之外。

3,preg_match()函数

我们会在后面进行详细解释,这里只是为了帮助测试,其返回一个布尔值,表示是否成功匹配。

了解完以上简单的内容,让我们进入正题。

正则表达式中的原子

什么是原子?原子是正则表达式的最基本组成单位,而且必须至少要包含一个原子。只要一个正则表达式可以单独使用的字符,就是原子。

这个概念可能看起来很模糊,没关系,下面我们来介绍一下正则表达式中原子的构成方式。

原子构成方式
1,所有打印(所有可以在屏幕上输出的字符串)和非打印字符(看不到的,比如空格,换行符等等)

2,如果所有有意义的字符,想做为原子使用,统统使用“\”转义字符进行转义即可。如:\. \* \+ \? \( \<\>。

注意:" \ "转义字符可以将有意义的字符转成没意义的字符,还可以将没意义的字符转为有意义的字符。如:\d表示任意一个十进制的数字。

3,在正则表达式中可以直接使用一些系统提供的代表范围的原子,如下面的表格所示:

代表范围的原子  说明  自定义原子表示法
 \d  表示任意一个十进制的数字  [0-9]
 \D  表示任意一个除数字这外的字符  [^0-9]
 \s  表示任意一个空白字符,空格、\n\r\t\f  [\n\r\t\f ]
 \S  表示任意一个非空白  [^\n\r\t\f ]
 \w  表示任意一个字 a-zA-Z0-9_  [a-zA-Z0-9_]
 \W  表示任意一个非字,除了a-zA-Z0-9_以外的任意一个字符  [^a-zA-Z0-9_]

4,自定义原子表(使用方括号[]),可以匹配方括号中的任何1个原子。

在上面的表格中我们已经将系统提供的范围原子使用自定义的方式作了等价转换。由于系统不可能提供所有我需要的原子,所以自定义原子表就显得十分必要了,比如我们想要匹配字母或者数字,就需要将原子写成[a-zA-Z0-9]。

这里需要注意:

A,符号“-”表示范围,如[a-z]表示小写字母a到z,但千万不要写成[a-9]这种形式!

B, 符号“^”表示取反,一定要放在方括号的开头,比如我们想要匹配非数字,则原子为[^0-9]。

下面我们来看一下正则表达式原子的使用实例,代码如下:

<?php 
$pattern = '/\d/';//数字原子表,也就是正则表达式的模式 
$string = 'dsadsadsa';//需要匹配的字符串 
if(preg_match($pattern, $string)){ 
echo "正则表达式<strong>{$pattern} </strong>和字符串 <strong>{$string}</strong> 匹配成功"; 
}else{ 
echo "<span style="color: red;">正则表达式{$pattern}和字符串{$string}匹配失败</span>"; 
} 
?>

注意:自定义原子表中的原子有一个被字符串匹配上,就匹配成功了。而去掉自定义原子表的方括号,则表示匹配整个字符串。如'/abc/'表示字符串中必须有abc这个子串才能被匹配,而'/[abc]/'表示字符串中只要包含a、b和c中的任何一个字符,即被匹配。

大家可以将上面实例中的模式进行修改(也就是正则表达式的模式变量$pattern),进而对我们本节所讲的正则表达式的原子进行验证。

本节关于正则表达式的定界符和原子就介绍完了,相信在练习的基础上,你已经会使用正则表达式的原子了。下节我们将介绍php正则表达式中的元字符,不要错过啊。

PHP 相关文章推荐
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
基于php 随机数的深入理解
Jun 05 PHP
编写安全 PHP应用程序的七个习惯深入分析
Jun 08 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP加密解密类实例代码
Jul 20 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
php读取本地json文件的实例
Mar 07 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 PHP
PHP超级全局变量数组小结
Oct 04 #PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 #PHP
php 保留字列表
Oct 04 #PHP
php使HTML标签自动补全闭合函数代码
Oct 04 #PHP
php中explode与split的区别介绍
Oct 03 #PHP
PHP explode()函数用法、切分字符串
Oct 03 #PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 #PHP
You might like
域名查询代码公布
2006/10/09 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
php实现encode64编码类实例
2015/03/24 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Django 重写用户模型的实现
2019/07/29 Python
Python高级property属性用法实例分析
2019/11/19 Python
django框架cookie和session用法实例详解
2019/12/10 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
如何在Python对Excel进行读取
2020/06/04 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
大学生工作自荐书
2014/06/16 职场文书
化验员岗位职责
2015/02/14 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python