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 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
微信支付开发交易通知实例
Jul 12 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
PHP类的反射用法实例
2014/11/03 PHP
图片onload事件触发问题解决方法
2011/07/31 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
Angularjs实现上传图片预览功能
2017/09/01 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
Python基础语法(Python基础知识点)
2016/02/28 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
3分钟学会一个Python小技巧
2018/11/23 Python
WxPython建立批量录入框窗口
2019/02/27 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python3监控疫情的完整代码
2020/02/20 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
python 发送get请求接口详解
2020/11/17 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
小学教师培训方案
2014/06/09 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015员工年度考核评语
2015/03/25 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript