正则表达式书写指南
最近在做 Markdown 转 UBB (Discuz编辑器) 的一个PHP的工具,运用到了正则。故复习了一遍。
基本语法
1. 界定符
表示一个正则表达式的开始和结束
2. 原子
可见原子
- 中文使用
unicode编码匹配 - 正则表达式中的关键字,需要加
\转义 - 其他的直接使用可见的字符
不可见原子
- 空格 直接打空格
即可 - 制表符
\t - 回车
\n(匹配的时候,看不见)
3. 元字符
原子的筛选方式
|匹配两个或者多个分支选择;[]匹配方括号中的任意一个原子;[^]匹配除方括号中的原子之外的任意字符;
原子的集合
.匹配除换行符之外的任意字符\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. 匹配模式
- 贪婪匹配: 匹配结果存在歧义时取其长
- 懒惰匹配: 匹配结果存在歧义时取其短
默认使用的是 贪婪模式,开启 懒惰模式 为 U
2.常见的模式修正
U/u懒惰模式/贪婪模式i忽略英文字母大小写x忽略空白s. 匹配包括换行的所以字符e留着
附录
