正则表达式基础语法
来源:互联网 发布:在淘宝买手机靠谱吗 编辑:程序博客网 时间:2024/06/06 00:54
这篇文章主要记录了正则表达式的一些基本语法、修正模式和php常用的正则表达式函数!
一、正则表达式基本语法:
界定符
原子
元字符
量词
边界控制
模式单元
1. 界定符
表示一个正则表达式的开始和结束。(如:/[0-9]/或#[0-9]#或{[0-9]})一般使用/或#作为界定符,不建议用{}
2. 原子
(1)可见原子:Unicode编码表中用键盘输出后肉眼可见的字符 如:标点;"_?.等,英文字母数字a-z A-Z 0-9,其他可见字符等(2)不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符 如:换行符\n,回车\r,制表符\t,空格,其他不可见符号
3. 元字符
(1)原子的筛选方式: | 匹配两个或者多个分支选择; [] 匹配方括号中的任意一个原子; [^] 匹配除方括号中的原子之外的任意字符;(2)原子的集合: . 匹配除换行符之外的任意字符,即[^\n]; \d 匹配任意一个十进制数字,即[0-9]; \D 匹配任意一个非十进制数字,即[^0-9]; \s 匹配一个不可见原子,即[\f\n\r\t\v]; \S 匹配一个可见原子,即[^\f\n\r\t\v]; \w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z_]; \W 匹配任意一个非数字、字母或下划线,即[^0-9a-zA-Z_];
4. 量词
{n} 表示其前面的原子恰好出现n次;{n,} 表示其前面的原子最少出现n次;{n,m} 表示其前面的原子最少出现n次,最多出现m次;* 匹配0次、1次或者多次其之前的原子,即{0,};+ 匹配1次或者多次其之前的原子,即{1,};? 匹配0次或者1次其之前的原子,即{0,1};
5. 边界控制
^ 匹配字符串开始的位置;$ 匹配字符串结尾的位置;
6. 模式单元
() 匹配其中的整体为一个原子;
二、模式修正:
1.懒惰匹配与贪婪匹配
(1) 贪婪匹配:匹配结果存在歧义时取其长(默认为贪婪模式)(2) 懒惰匹配:匹配结果存在歧义时取其短(懒惰模式标识:U 即:只需要在正则表达式的末尾加上U 如:/so.+234/U)
2.常见修正模式
U 懒惰匹配;i 忽略英文字母大小写;x 忽略空白;s 让元字符'.'匹配包括换行符在内的所有字符;e 配合函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行;
三、PHP中常用的正则表达式函数:
1. preg_match()与preg_match_all()
preg_match($pattern,$subject,[array &matches]) 第三个参数是传递引用,参数可选; preg_match()只会在$subject中匹配一次; return 匹配的次数(0次或1次)preg_match_all($pattern,$subject,array &matches) 第三个参数是传递引用,参数必填; preg_match_all()会把$subject中所有符合的匹配出来; return 匹配的次数(0次或多次)
2. preg_replace()与preg_filter()
preg_replace($pattern,$replacement,$subject) return 返回被替换后的结果,(当为数组集时:不管替换部分和没有替换部分都会返回);preg_filter($pattern,$replacement,$subject) return 返回替换后的结果,(当为数组集时:只保留被替换过的,没有替换的部分不返回;)
3. preg_grep()
preg_grep($pattern,array $input) return 只返回被匹配到的结果集,没有匹配到的就过滤掉不返回
4. preg_split()
preg_split($pattern,$subject) return 用匹配到的结果去截取字符串,将截取后的结果返回;
5. preg_quote()
preg_quote($str) 正则运算符转义,如: .\+*?[^]$(){}=!<>|:-
0 0
- 正则表达式基础语法
- 正则表达式基础语法
- 正则表达式基础语法
- 正则表达式基础语法
- 正则表达式基础语法
- 正则表达式基础语法
- 正则表达式基础(语法)
- JavaScript基础语法---正则表达式
- js正则表达式基础语法
- 正则表达式的基础语法
- 正则表达式的基础语法
- 正则表达式--基础语法总结
- 正则表达式的基础语法
- 正则表达式基础语法例子
- 正则表达式的一些基础语法
- Python篇----正则表达式语法(基础)
- 正则表达式的基础和语法
- Java正则表达式基础案例和语法
- X,Y,frame,size重写为UIView创建分类
- JDBC数据库连接
- 多进程与多线程的选择
- caffe多标签装hdf5接口
- FMDB 使用方法
- 正则表达式基础语法
- Unity Http短连接
- 专项:Android内存泄露实践分析
- Android 插件化之类加载器 ClassLoader
- arm-linux内核编译过程小结
- Ngix的介绍
- 解析Json 和 XML 的学习
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- LinearLayout布局