name: inverse layout: true class: center, middle, inverse --- # 正则表达式
------ ## 对正则表达式基础用法的总结 — 叶子 2017年9月8日 --- layout:false class: 1. 正则表达式是什么 ---- 2. 优缺点 ---- 3. 基本语法 ---- 4. 高级用法 ---- 5. 日常应用 ---- --- ## 正则表达式是什么 ### 一种字符串搜索和匹配的工具。 --- ## 正则表达式有什么优缺点 ### 优点: - **应用广泛** - ** 捕获字符串的能力强** ### 缺点: - ** 写法反人类** - ** 影响性能** - ** 可读性差** --- ## 正则表达式的基本语法 + 界定符 * 原子 - 量词 + 边界控制 * 模式单元 --- - 界定符 1. `# #` 如:`#`[0-9]`#` 2. `//` 如:/[0-9]/ 3. `{}` 如: {[0-9]} --- - 原子 1. 可见原子 2. 不可见原子 --- - 元字符 **原子的筛选方式** 1. | 匹配两个或多个分支选项 2. [] 匹配方括号中的任意一个字符 3. [^]匹配除方括号原子之外的任意字符 **原子的集合** 1. . 匹配除换行符之外的任意字符 2. \d 匹配任意一个十进制的数据 [0-9] 3. \D 匹配任意一个非十进制的数据 [^0-9] 4. \s 匹配一个不可见原子 [\f\n\r\t\v] 5. \S 匹配一个可见原子 [^\f\n\r\t\v] 6. \w 匹配任意一个数字,字母,下划线 [a-zA-Z0-9_] 7. \W 匹配任意一个非数字,字母或下划线 [^0-9a-zA-Z_] --- - 量词 **字符重复的次数** + {n} 前面原子恰好出现n次 * {n,} 至少出现n次 - {n,m} 至少出现n次,最多出现m次 + `*` 匹配0次,1次或多次 * `+` 匹配1次或多次 - `?` 匹配0次或1次 --- ## 边界控制和模式单元 + ^ 匹配字符串开始的位置 * $ 匹配字符串结尾的位置 - () 匹配其中的原子整体为一个原子 --- ## 正则表达式的高级语法 ### 贪婪匹配: - **匹配结果存在歧义的取其长 ** ### 懒惰匹配: - ** 匹配结果存在歧义的取其短 ** ### - demo: /xcar.+123/ big xcar_12311212123 ### 常见的修正模式: + U 懒惰匹配 * i 忽略英文字母大小写 - x 忽略空白符 + s 让元字符`.`匹配包括换行符的所有字符 --- ## 日常应用 + 非空、浮点数匹配 * 手机号匹配 - 邮箱匹配 --- -正则表达式总结 : - **附链接:** [https://www.yezismile.com/sun/images/reg.jpg](https://www.yezismile.com/sun/images/reg.jpg) - **演示地址:** [https://www.regexpal.com/](https://www.regexpal.com/)  -php常见的正则表达式函数: + preg_match($pattern,$subject) * preg_match_all($pattern,$subject,array&$matches); - preg_replace($pattern,$replacement,$subject); + preg_split($pattern,$subject); + preg_quote($str); --- template: inverse # Q & A --- template: inverse # 谢谢大家!