0

0

PHP正则表达式入门教程

WBOY

WBOY

发布时间:2023-06-23 12:46:49

|

1870人浏览过

|

来源于php中文网

原创

在开发网站或者应用程序时,我们经常需要对文本进行处理。如果只是简单的字符串操作,例如查找替换、截取等,可能还可以使用一些内置函数来完成。但是如果需要进行更加复杂的模式匹配或者数据提取,那么就需要使用正则表达式了。

正则表达式是一种用于处理文本数据的强大工具。它可以帮助我们通过一些特定的符号和规则来匹配和处理字符串。在PHP中,正则表达式是内置的,并且可以使用PCRE库(Perl兼容正则表达式)来进行匹配。

在本文中,我们将介绍PHP正则表达式的基本语法和用法,帮助初学者快速入门并掌握这个强大工具。

  1. 基本语法

正则表达式由一些特定的字符和规则组成,用于描述要匹配的模式。在PHP中,正则表达式需要用斜线(/)将其包裹起来。例如:

$pattern = "/hello world/i";

这个正则表达式用于匹配字符串中的“hello world”,并且忽略大小写。

立即学习PHP免费学习笔记(深入)”;

其中,“/”表示正则表达式的开始和结束,中间是要匹配的模式。在这个例子中,我们使用了“i”修饰符来忽略大小写。修饰符在斜线之外,用于修改正则表达式的匹配行为。常见的修饰符有:

修饰符 描述
i 忽略大小写
m 将字符串视为多行
s 将点号(.)匹配所有字符,包括换行符
x 忽略正则表达式中的空格和注释
  1. 字符集

在正则表达式中,我们可以使用字符集来匹配一组特定的字符。字符集需要使用方括号([])将其包裹起来。例如:

$pattern = "/[aeiou]/i";

这个正则表达式用于匹配字符串中的任意一个元音字母,忽略大小写。

在方括号内,我们列出了要匹配的字符,它们之间用逗号(,)分隔。可以使用短横线(-)来表示一个范围。例如:

$pattern = "/[a-z]/i";

这个正则表达式用于匹配任意一个小写字母,忽略大小写。

在方括号内还可以使用一些特殊的元字符来表示特定的字符集合。例如:

元字符 描述
d 匹配任意一个数字
D 匹配任意一个非数字
w 匹配任意一个字母、数字或下划线
W 匹配任意一个非字母、数字或下划线
s 匹配任意一个空白字符(空格、制表符、换行符等)
S 匹配任意一个非空白字符
  1. 量词

在正则表达式中,我们可以使用量词来表示某个元素的匹配次数。常见的量词有:

量词 描述
  • | 匹配0个或多个
  • | 匹配1个或多个
    ? | 匹配0个或1个
    {n} | 匹配恰好n个
    {n,} | 匹配至少n个
    {n,m} | 匹配n到m个

例如:

$pattern = "/a+/i";

这个正则表达式用于匹配字符串中的一个或多个字母“A”,忽略大小写。

$pattern = "/d{3,}/";

这个正则表达式用于匹配至少3个数字的字符串。

  1. 边界匹配

在正则表达式中,边界匹配用于限制匹配的范围。常见的边界匹配有:

正则快速入门+常用的表达式
正则快速入门+常用的表达式

正则快速入门+常用的表达式

下载
匹配符号 描述
^ 匹配字符串的开头
$ 匹配字符串的结尾
匹配单词的边界
B 匹配除单词边界之外的位置

例如:

$pattern = "/^hello/i";

这个正则表达式用于匹配以“hello”开头的字符串,忽略大小写。

$pattern = "/world$/i";

这个正则表达式用于匹配以“world”结尾的字符串,忽略大小写。

$pattern = "/hello/i";

这个正则表达式用于匹配单词“hello”,忽略大小写。

  1. 捕获分组

在正则表达式中,我们可以使用捕获分组来提取匹配的内容。捕获分组需要使用圆括号(())将要捕获的内容包裹起来。例如:

$pattern = "/(d{3})-(d{4})/";
$string = "my phone number is 123-4567";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // 123-4567
    echo $matches[1]; // 123
    echo $matches[2]; // 4567
}

这个正则表达式用于匹配“123-4567”这种形式的电话号码,并且将前三个数字和后四个数字分别保存到$matches数组中。

  1. 贪婪匹配和非贪婪匹配

在正则表达式中,默认情况下会进行贪婪匹配。也就是说,它会尽可能多地匹配字符。例如:

$pattern = "/.*hello/";
$string = "my name is hello, nice to meet you";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // my name is hello
}

这个正则表达式用于匹配字符串中的“hello”之前的所有字符。

如果我们想进行非贪婪匹配,也就是尽可能少地匹配字符,可以在量词后面添加一个问号(?)来实现。例如:

$pattern = "/.*?hello/";
$string = "my name is hello, nice to meet you";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // my name is 
}

这个正则表达式也用于匹配字符串中的“hello”之前的所有字符,但是它只匹配到了“my name is”。

  1. 其他函数

除了preg_match()函数之外,PHP中还提供了其他一些正则表达式相关的函数,例如:

函数 描述
preg_match_all() 用于匹配所有符合正则表达式的结果
preg_replace() 用于替换符合正则表达式的字符串
preg_split() 用于按照正则表达式将字符串分割成数组

例如:

$pattern = "/d+/";
$string = "I have 123 apples and 456 bananas";
$result = preg_match_all($pattern, $string, $matches);
print_r($matches);

$result = preg_replace($pattern, "***", $string);
echo $result;

$result = preg_split($pattern, $string);
print_r($result);

这段代码分别演示了匹配所有数字、替换所有数字、以数字为分隔符将字符串分割成数组的操作。

总结

本文介绍了PHP正则表达式的基本语法和用法,包括字符集、量词、边界匹配、捕获分组、贪婪匹配和非贪婪匹配等内容。正则表达式是一种非常强大的工具,掌握它可以让我们在处理文本时事半功倍。希望本文能够帮助读者快速入门并掌握PHP正则表达式的基本用法。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

4

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

55

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

75

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

37

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

17

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

153

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

139

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.6万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号