PHP正则分组与捕获技巧正则表达式的分组功能可以从文本中提取特定内容。今天说说各种分组技巧。基本分组用括号。php$log 2024-01-15 14:30:00 [ERROR] 数据库连接失败;preg_match(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}) \[(\w)\] (.)$/, $log, $m);echo 日期: {$m[1]}\n;echo 时间: {$m[2]}\n;echo 级别: {$m[3]}\n;echo 消息: {$m[4]}\n;?命名分组让代码更可读。php$url https://user:passwww.example.com:8080/path?queryvalue#fragment;$pattern /^(?Phttps?):\/\/(?:(?P[^:]):(?P[^]))?(?P[^\/:])(?::(?P\d))?(?P\/[^?#]*)(?:\?(?P[^#]*))?(?:#(?P.*))?$/;if (preg_match($pattern, $url, $m)) {echo 协议: {$m[protocol]}\n;echo 主机: {$m[host]}\n;echo 端口: . ($m[port] ?? 默认) . \n;echo 路径: {$m[path]}\n;}?非捕获分组用(?:)。php$text 2024-01-15 和 2024-02-20;preg_match_all(/(?:\d{4})-(\d{2})-\d{2}/, $text, $matches);print_r($matches[1]);?替换中的反向引用。php$phone 13800138000;echo preg_replace(/(\d{3})\d{4}(\d{4})/, $1****$2, $phone) . \n;$date 2024-01-15;echo preg_replace(/(\d{4})-(\d{2})-(\d{2})/, $1年$2月$3日, $date) . \n;?回调替换实现更复杂的逻辑。php$text 价格: 100元, 数量: 5个;$result preg_replace_callback(/(\d)元/, function ($m) {return ($m[1] * 1.2) . 元;}, $text);echo $result\n;?分组是正则的高级功能。命名分组让代码更可读非捕获分组提高性能反向引用在替换时很方便。分组配合preg_replace_callback可以处理复杂的文本转换场景。
PHP正则分组与捕获技巧
发布时间:2026/6/8 7:59:36
PHP正则分组与捕获技巧正则表达式的分组功能可以从文本中提取特定内容。今天说说各种分组技巧。基本分组用括号。php$log 2024-01-15 14:30:00 [ERROR] 数据库连接失败;preg_match(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}) \[(\w)\] (.)$/, $log, $m);echo 日期: {$m[1]}\n;echo 时间: {$m[2]}\n;echo 级别: {$m[3]}\n;echo 消息: {$m[4]}\n;?命名分组让代码更可读。php$url https://user:passwww.example.com:8080/path?queryvalue#fragment;$pattern /^(?Phttps?):\/\/(?:(?P[^:]):(?P[^]))?(?P[^\/:])(?::(?P\d))?(?P\/[^?#]*)(?:\?(?P[^#]*))?(?:#(?P.*))?$/;if (preg_match($pattern, $url, $m)) {echo 协议: {$m[protocol]}\n;echo 主机: {$m[host]}\n;echo 端口: . ($m[port] ?? 默认) . \n;echo 路径: {$m[path]}\n;}?非捕获分组用(?:)。php$text 2024-01-15 和 2024-02-20;preg_match_all(/(?:\d{4})-(\d{2})-\d{2}/, $text, $matches);print_r($matches[1]);?替换中的反向引用。php$phone 13800138000;echo preg_replace(/(\d{3})\d{4}(\d{4})/, $1****$2, $phone) . \n;$date 2024-01-15;echo preg_replace(/(\d{4})-(\d{2})-(\d{2})/, $1年$2月$3日, $date) . \n;?回调替换实现更复杂的逻辑。php$text 价格: 100元, 数量: 5个;$result preg_replace_callback(/(\d)元/, function ($m) {return ($m[1] * 1.2) . 元;}, $text);echo $result\n;?分组是正则的高级功能。命名分组让代码更可读非捕获分组提高性能反向引用在替换时很方便。分组配合preg_replace_callback可以处理复杂的文本转换场景。