python学习笔记:正则表达式
用标准化代码(正则表达式)匹配字符串
一般
正则表达式 | 字符串 |
---|---|
\d | 数字 |
\w | 数字或字母 |
\s | 空格或tab等空白符 |
. | 单个任意字符 |
* | 任意个字符 (含零个) |
+ | 至少一个字符 |
? | 零或一个字符 |
{n} | n个字符 |
{m,n} | m到n个字符 |
进阶
正则表达式 | 字符串 |
---|---|
[0-9a-zA-Z\ _] | 一个数字字母下划线组成的字符串 |
[a-zA-Z\ _] [0-9a-zA-Z\ _] * | 首位不是数字的(如上的)字符串 |
a|b | a或者b |
^ | 行首 |
$ | 行尾 |
说明:没有^ 和$的时候,可以用字符串的一部分匹配整体
使用
在字符串前添加前缀r,例如r’a\b’,避免\被用于转义
import re
re.match(正则表达式,字符串)
成功返回一个match对象,失败返回none
re.split(r’[\s\,]+’ , ‘a,b, c d’)
返回 [‘a’ , ‘b’ , ‘c’ , ‘d’]
分组
m = re.match(r’^(\d{3})-(\d{3,8})$’, ‘010-12345’)
m.group(0)为‘010-12345’
m.group(1)为‘010’
m.group(2)为‘12345’
贪婪匹配
\d+会尽可能的多匹配字符
\d+?会根据后文尽可能少匹配
预编译
re_telephone=re.compile(r’^(\d{3})-(\d{3,8})$’)
re_telephone.match(‘010-12345’).groups()
输出(‘010’, ‘12345’)