正则是一门独立的语法,与python没有关系
正则表达式就是设置好规则,来处理字符串, 语法包含元字符,量词,特殊方法和现象
1,元字符:
字符组: [] [^] | ()
在同一位置可能出现的各种字符组成的字符组,在正则表达式中用[]表示,注意只能判断一个位置的字符, []中的内容,依据ASCII表中的顺讯,从小到大排列
[0-9] 找到字符串中的数字 [a-z] 找到字符串中的小写字母 [A-Z] 找到字符串中的大写字母 [0-9a-zA-Z] 表示16进制字符
[^..]匹配除了字符组中字符的所有字符 [...]匹配字符组中的字符 a|b 匹配a或b ()匹配括号内的表达式,也表示一个组
\w \d \s(\n,\t) \W \D \S :
\w 匹配字符中的数字,字母,下划线 \W 匹配非数字,非字母,非下划线
\d 匹配数字 \D 匹配非数字
\s 匹配空百符, 回车,空格,tab \S 匹配非空格,非回车,非TAB
^ $:
^ 匹配字符串的开始 $ 匹配字符串的结尾
. :
. 匹配出换行符以外的任意字符
2,量词:
? + *
? 重复0次或1次 + 重复1次或多次 * 重复0次或多次
{n} {n,} {n,m}
{n} 重复n次 {n,} 重复n次或多次 {n,m} 重复n到m次
常用的组合用法:
(1)高. ===>匹配所有 高X ^高 ===> 只从开头匹配 高X 高$ ===> 只从末尾匹配 高X
(2) 高.? ===>先取高,再取一个字符0次(不取)或取1次 高.+ ===>先取高,再取一个字符(至少一次)或取多次 高.* ==>先取高,再取一个字符0次(不取)或多次
高.{1,2} ==> 取1到2次任意字符 高.*? ===> 惰性匹配
(3)字符集: 高[用永杰帅带了]* 匹配高后面[用永杰帅带了]任意次 高[永杰]* 匹配不是永杰的字符任意次 [\d] 匹配任意一个数字 [\d]+ 匹配任意个数字
(4) 在Python中 ======> \ 一般都有转义的含义,所以一般在字符串的前面加r,就能转义成 '纯的' 字符串 如:r'\\n' r'\n'
在正则中的含义 ======> '\(' 表示匹配小括号 '\-' 表示减法 [()+*?/$.] 在字符组中一些特殊的字符会现出原形
(5) .* ===> 默认是贪婪模式,会匹配尽量长的字符串 高.{1,6}?帅 ===>从高到帅之间的字符,惰性匹配,回溯算法
.*? ===> 转换为非贪婪模式, 会匹配尽量短的字符串 .*?X ===>取前面任意长度的字符,直到X出现,停止
(6) *? 重复任意次,但尽可能少重复
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m} 重复n到m次,但尽可能少重复
{n,} 重复n次以上,但尽可能少重复