一、概念
形式语言,描述语言的特征而不是具体的内容,常用于字符串的匹配。
二、语法和基本操作符
re库也可以采用string类型表示正则表达式,但更繁琐例如:
‘[1‐9]\\d{5}’ 相当于原生字符串的 ‘[1‐9]\d{5}’
‘\\d{3}‐\\d{8}|\\d{4}‐\\d{7}’ 相当于原生字符串的 ‘\d{3}‐\d{8}|\d{4}‐\d{7}’
建议:当正则表达式包含转义符时,使用raw string,否则两者是一样的。
常用正则表达式:
re表达式 | 内涵 |
---|---|
^[A‐Za‐z]+$ | 以字母作为开头和结尾,长度>=1由,即26个字母组成的字符串 |
^[A‐Za‐z0‐9]+$ | 由26个字母和数字组成的字符串 |
^[0‐9][1‐9][0‐9]$ | 正整数形式的字符串 |
[\u4e00‐\u9fa5] | 匹配中文字符 |
\d{3}‐\d{8}|\d{4}‐\d{7} | 国内电话号码,010‐68913536 |
IP地址字符串形式的正则表达式(IP地址分4段,每段0‐255)
\d+.\d+.\d+.\d+ 或\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
精确写法:
0‐99: [1‐9]?\d
100‐199: 1\d{2}
200‐249: 2[0‐4]\d
250‐255: 25[0‐5]
(([1‐9]?\d|1\d{2}|2[0‐4]\d|25[0‐5]).){3}([1‐9]?\d|1\d{2}|2[0‐4]\d|25[0‐5])
其他例子:
re.findall(r'[af].', 'abcaabbccfg') # 第一位为a或者f,第二位为任意字符
输出结果:
['ab', 'aa', 'fg']
re.findall(r'[af]+', 'abcafafaabbccfg') # 每个位置都必须是是a或者f,且长度至少为1(贪婪匹配)
输出结果:
['a', 'afafaa', 'f']
re.findall(r'[af]+', 'abcafafaabbccfg') # 每个位置都必须是是a或者f,且长度至少为1(贪婪匹配)
输出结果:
['a', 'afafaa', 'f']
//在开始位置匹配,开始不符合就返回nonetype,符合就返回不会再考虑后续位置的str
re.findall("^[a-z]{4}",'abcd0abcd2abb3abbbb')
re.findall("^[a-z]{4}",'3abcd0abcd2abb3abbbb')
输出:
['abcd']
[]
//在结