##### 认识正则表达式 ##### 直接匹配 ```python '字符':'apple':'apple' ``` ##### 元字符 ```python '.': 任意单个字符除了换行符 '[]': 匹配一系列字符集,可使用'-'指定范围 '[^]': 匹配除了方括号里的任意字符 '*': 匹配>=0个重复的在*号之前的字符,字符可以不存在 '+': 匹配>=1个重复的+号前的字符 '?': 标记?之前的字符为可选. '{n,m}': 匹配num个大括号之前的字符或字符集 (n <= num <= m) '(xyz)': 匹配与 xyz 完全相等的字符串,重复模块分组 '(?P<name>...)': 为分组命名name '(?:…)': 匹配整体,但不分组 '|': 匹配符号前或后的符 '\': 匹配一些保留的字符 '^': 字符串整体开始处匹配 ': 字符串整体末端处匹配 ``` ##### 简写字符集 ```python \w 匹配所有字母数字,等同于 [a-zA-Z0-9_] \W 匹配所有非字母数字,即符号,等同于: [^\w] \d 匹配数字: [0-9] \D 匹配非数字: [^\d] \s 匹配所有空格字符,等同于: [\t\n\f\r\p{Z}] \S 匹配所有非空格字符: [^\s] \b 匹配空字符串,但只在单词开始或结尾的位置 \B 匹配空字符串,但不能在词的开头或者结尾 \f 匹配一个换页符 \n 匹配一个换行符 \r 匹配一个回车符 \t 匹配一个制表符 \v 匹配一个垂直制表符 \p 匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符 ``` ##### 前后预查 ```python x(?=exp) 正先行断言-存在,字符串 后面 必须 跟着 x(?!exp) 负先行断言-排除,字符串 后面 不能 跟着 (?<=exp)x 正后发断言-存在,字符串 前面 必须 跟着 (?<!exp)x 负后发断言-排除,字符串 前面 不能 跟着 ``` ##### 标志 ```python \i 忽略大小写。 \g 全局搜索。 \m 多行修饰符:锚点元字符 ^ $ 工作范围在每行的起始。 ``` ##### 贪婪匹配与惰性匹配 - 正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。 - 在匹配重复元字符后加 "?" 将贪婪匹配模式转化为惰性匹配模式。