正则表达式是一种可以用来描述特定模式的表达式,常被用来匹配、查找或替换特定的字符串。PHP内置支持正则表达式的相关函数,使用正则表达式可以让我们的编程工作更加高效、灵活。
PHP正则表达式完全教程之精华篇
一、前言
正则表达式是一种可以用来描述特定模式的表达式,常被用来匹配、查找或替换特定的字符串。PHP内置支持正则表达式的相关函数,使用正则表达式可以让我们的编程工作更加高效、灵活。
本教程将从基础概念讲起,逐步介绍正则表达式的各种元字符、语法、操作函数以及实用技巧。
二、基础概念
正则表达式由普通字符和元字符组成。普通字符会直接匹配相应的字符,而元字符则表示某一类字符的组合或者某一特定字符。
以下为常见的元字符:
^匹配字符串的开始位置。$匹配字符串的结束位置。.匹配任意字符,除了换行符。*匹配前一个字符0次或多次。+匹配前一个字符1次或多次。?匹配前一个字符0次或1次。{n}匹配前一个字符恰好n次。{n,}匹配前一个字符n次或多次。{n,m}匹配前一个字符n到m次。
三、操作函数
PHP提供了多个正则表达式相关的操作函数,下面主要介绍match、preg_match、preg_match_all、preg_replace和preg_split。
1. match()
match()函数只能用于匹配数字、并且仅返回第一次匹配的结果。
示例代码:
$str = "hello world 123";
if (preg_match("/\d+/", $str, $match)) {
  echo $match[0];
}
输出结果:
123
2. preg_match()
preg_match()函数则可以匹配任何字符串,仅返回第一次匹配的结果,用法和match()函数类似。
示例代码:
$str = "hello world 123";
if (preg_match("/world (\d+)/", $str, $match)) {
  echo $match[1];
}
输出结果:
123
3. preg_match_all()
与preg_match()函数不同,preg_match_all()函数返回所有匹配的结果。
示例代码:
$str = "hello 123 world 456";
if (preg_match_all("/\d+/", $str, $matches)) {
  print_r($matches);
}
输出结果:
Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 456
        )
)
4. preg_replace()
preg_replace()函数用于替换匹配的字符串部分。
示例代码:
$str = "hello world 123";
echo preg_replace('/\d+/', '456', $str);
输出结果:
hello world 456
5. preg_split()
preg_split()函数用于根据正则表达式将字符串分割成数组。
示例代码:
$str = "hello 123 world 456";
print_r(preg_split('/\d+/', $str));
输出结果:
Array
(
    [0] => hello 
    [1] =>  world 
    [2] => 
)
四、实用技巧
1. 捕获组
捕获组可以使用小括号()来进行定义,可以将匹配结果中指定部分提取出来作为返回值。
示例代码:
$str = "2019-12-01";
if (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $str, $match)) {
    echo $match[1]."-".$match[2]."-".$match[3];
}
输出结果:
2019-12-01
2. 贪婪模式和非贪婪模式
- 贪婪模式:默认情况下正则表达式会尽量匹配长的字符串。
 - 非贪婪模式:使用
?元字符可以实现非贪婪模式,它会尽量匹配短的字符串。 
示例代码:
$str = "<div>hello</div><div>world</div>";
preg_match('/<div>(.*)<\/div>/', $str, $match1);
print_r($match1);
preg_match('/<div>(.*?)<\/div>/', $str, $match2);
print_r($match2);
输出结果:
Array
(
    [0] => <div>hello</div><div>world</div>
    [1] => hello</div><div>world
)
Array
(
    [0] => <div>hello</div>
    [1] => hello
)
五、总结
正则表达式虽然看起来有些晦涩,但实际上是一项十分实用的技能,在PHP编程中经常使用。掌握基础概念、操作函数以及实用技巧,可以让我们更加高效、准确地编写正则表达式相关代码,提高编程效率。
本文标题为:php正则表达式完全教程之精华篇
				
        
 
            
        - php用数组返回无限分类的列表数据的代码 2023-12-30
 - Laravel框架查询构造器 CURD操作示例 2023-02-06
 - nginx与PHP配置 2023-09-01
 - Yii框架学习笔记之应用组件操作示例 2023-03-12
 - php解析非标准json、非规范json的方式实例 2023-05-03
 - ubuntu14.04 安装apache+php7.2* 2023-09-02
 - PHP排序算法之基数排序(Radix Sort)实例详解 2022-10-15
 - php网页上传文件到Ubuntu服务器(input type=fire) 2023-09-02
 - 选择MySQL数据库的命令以及PHP脚本下的操作方法 2024-02-18
 - PHP中 empty() 和 isset() 的区别介绍 2022-09-12
 
						
						
						
						
						
				
				
				
				