第22章 PHP 正则表达式 修饰符与分组高级

一、正则常用修饰符(写在定界符后面)

1. i:忽略大小写
2. g:全局匹配(PHP中preg_match_all自带全局)
3. m:多行模式,^$匹配每行开头结尾
4. s:让 . 也能匹配换行符
5. u:匹配中文、UTF-8字符

示例写法:
 /^[a-z]+$/i 

二、分组 () 用法

1. 把多个字符当成一个整体
2. 可单独捕获分组内容,方便提取
3. 配合次数符使用

基础示例:

php

// 匹配重复的abc
$preg = '/(abc)+/';
 

三、字符集 [] 规则

  •  [abc] :匹配a、b、c任意一个
  •  [a-z] :小写字母
  •  [A-Z] :大写字母
  •  [0-9] :数字
  •  [a-zA-Z0-9_] :等价 \w
  •  [^abc] :取反,不匹配a、b、c

四、中文正则匹配

UTF-8 中文规则:

php

$preg = '/[\x7f-\xff]/';
// 标准中文匹配
$preg = '/^[\u4e00-\u9fa5]+$/u';
 

五、正则贪婪与非贪婪

  • 默认 贪婪:尽可能匹配最长
  • 非贪婪:加  ?  匹配最短
    写法: .*? 、 .+? 

示例:

php

$str = '111222';
// 非贪婪提取
preg_match_all('/.*?/',$str,$arr);
 

六、preg_replace 高级替换

批量替换敏感词:

php

$str = '垃圾 傻逼 内容';
$preg = '/垃圾|傻逼/';
$new = preg_replace($preg,'***',$str);
echo $new;
 

七、本章核心总结

1. 修饰符加在定界符末尾,i、s、m、u最常用
2.  ()  分组、 []  字符集是正则进阶核心
3.  .*?  非贪婪,爬虫抓取标签必用
4. 匹配中文必须加 u 修饰符
5. 敏感词过滤、标签提取都靠正则分组+替换
【瓜分奖池】PHP基础第二十二章 第5张插图