PHP中的正则表达式:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP中的正则表达式:处理文本的强大工具



正则表达式(regex)是定义用于搜索和操作字符串的模式的字符序列。在PHP中,它们通过PCRE(Perl兼容正则表达式)库实现,为开发者提供了数据验证、文本解析和子字符串替换的灵活功能。在本文中,我们将介绍PHP中正则表达式的基本函数、语法和实际使用示例。



PHP中用于处理正则表达式的主要函数



PHP中有几个关键函数可用于处理正则表达式。让我们看看其中最重要的几个。



preg_match() — 搜索第一个匹配项



preg_match()函数在字符串中搜索与模式的第一个匹配项。如果找到匹配项,则返回1;如果没有找到,则返回0;如果出错,则返回FALSE。



<?php$text = "Мой email: example@mail.com и test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";

if (preg_match($pattern, $text, $matches)) { echo "Найден email: " . $matches[0]; // 输出:Найден email: example@mail.com}?>


preg_match_all() — 搜索所有匹配项



与preg_match()不同,此函数在字符串中查找所有匹配项,并将它们放入一个多维数组中。



<?php$text = "Мой email: example@mail.com и test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";

preg_match_all($pattern, $text, $matches);print_r($matches[0]);// 输出:Array ( [0] => example@mail.com [1] => test@domain.org )?>


preg_replace() — 按模式替换



preg_replace()函数将所有与模式匹配的内容替换为指定的字符串。它支持反向引用和修饰符。



<?php$text = "Сегодня 15.03.2024, а завтра будет 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";

echo preg_replace($pattern, $replacement, $text);// 输出:Сегодня 2024-03-15, а завтра будет 2024-03-16?>


preg_split() — 按模式分割字符串



preg_split()函数根据指定的模式将字符串分割成一个数组。这类似于explode(),但支持正则表达式。



<?php$text = "яблоко, груша; банан: апельсин";$pattern = "/[,;: ]+/";

$fruits = preg_split($pattern, $text);print_r($fruits);// 输出:Array ( [0] => яблоко [1] => груша [2] => банан [3] => апельсин )?>


正则表达式的语法



PHP中的正则表达式包含在分隔符中(通常是斜杠/),并且可以在结束分隔符后包含修饰符。让我们看看语法的主要元素。



元字符和量词



  • 字符类: .(任意字符),\\d(数字),\\w(字母、数字、下划线),\\s(空白字符)
  • 量词: *(0次或更多),+(1次或更多),?(0次或1次),{n,m}(从n到m次)
  • 锚点: ^(字符串开头),$(字符串结尾),\\b(单词边界)
  • 分组: ()(捕获组),(?:)(非捕获组)
  • 选择: |(逻辑OR)


模式修饰符



  • i — 不区分大小写的搜索
  • m — 多行模式(^和$对每一行生效)
  • s — 元字符.包括换行符
  • u — Unicode支持(处理UTF-8文本时必须使用)

博客

书籍推荐