正则表达式(re)
正则表达式各个符号以及意义
-
. 可以代表任意字符,除了(\n)
-
[]从括号中选择一个匹配,括号中无顺序要求。注意:不加(,),不然多匹配逗号,多个逗号导致报错
-
[^]取括号内相反
-
\d 可以代表数字(0-9)
-
\D 可以代表非数字
-
\s 可以代表空(空格,\t,\n)
-
\S可以代表非空
-
\w 可以代表单词字符(a-z,A-Z,0-9,_)
-
\W 可以表示非单词字符
原始字符串
-
正则表达式想要一个\需要输出四个\(python本身\\=,正则也是\\=\),所以出现原始表达式
-
在字符串前加上一个r,表示原始字符串,一个\在python不再是转译,注意:r只能取消python转译,但是正则表达式中的转译不会取消
数量符号
- *表示一个字符出现0次或者无数次,例:\d*
- +表示一个字符出现1次或无限次
- ?表示一个字符出现1次或0次
- {m}表示字符出现m次
- {m,}表示一个字符出现m到无限次
- {m,n}表示一个字符出现m到n次
边界符号
-
必须以某个字符串开头,例:(1)
-
必 须 以 某 个 字 符 串 结 尾 , 例 : ( 1 必须以某个字符串结尾,例:(1 必须以某个字符串结尾,例:(1)
-
\b匹配一个单词边界
-
\B匹配一个非单词边界
匹配分组
-
|可以匹配左右两边任意一个表达式
-
()分组
-
\num引用第num分组
-
(?P<name>)给分组起别名
re模块其他用法
- search 搜索符合特征的字符串
- findall 找出所有符合特征的字符串
- sub 将前一个符合规则的字符串代替后一个符合的
- split 设定一个符号作为分隔符,分隔后面字符串
贪婪与非贪婪
- 贪婪:总是尽可能匹配多的字符,如(‘*’,‘+’,“?”,‘{m,n}’)
- 非贪婪:在贪婪字符后加上一个“?”,尽可能匹配少的字符