天天看点

python学习笔记:正则表达式 leah

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’)

继续阅读