正则表达式(regular expression)
PY[^PY]{0,10}
正则表达式是通用的字符表达框架;表达简洁和特征的思想的工具
表达文本特征的类型
同时查找或替换一组字符串
匹配字符串的全部和部分
编译:将符正则表达式语法的字符串转换为正则表达式特征
语法
组成:字符,操作符
操作符 | 说明 | 实例 |
---|---|---|
. | 表示任意单个字符 | |
[] | 字符集,对单个字符给出范围 | [ab]表示字符a或b,[a-z]表示a到z中的单个字符 |
[^] | 非字符集,对单个字符给出排除范围 | [^abd]表示非a、b、c的单个字符 |
* | 前一个字符0次或无限次扩展 | *abc表示ab,abc,abcc等 |
+ | 前一个字符的1次或无限次扩展 | |
? | 前一个字符的1次或0次扩展 | |
{m | 扩展前一个字符m次 | |
{m,n} | 扩展前一个字符m至n次(含n) | |
^ | 匹配字符串的开头 | ^abc表示abc且只在一个字符串的开头 |
$ | 匹配字符串的结尾 | |
() | 分组标记 | |
\d | 数字,等价于[0-9] | |
\w | 单词字符,等价于[A-Za-z0-9] |
实例
PY[^PY]{0,10}:"PY"开头,后续存在不多于10个字符串,后续字符不能是"P"或者"Y"
^[a-zA-Z]+$:由26个字母表示的字符串
^-?\d+$:由整数组成的字符串,需要考虑到负数
[1-9]\d{5}:邮政编码,邮政编码有6位,第1位是0-9
{\u4e00-\9fa5}:匹配中文字符,utf-8编码
匹配IP地址
格式:0-255,分4段,每段用.分隔
将0-255分为4段
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]).)
python的正则表达式库(re)
在pythonz中用raw string(原生字符串) 类型表示正则表达式,表示为:r’text’
原生字符串不包括转义符,即”\”就是”\”
因此,若采用string类型,会很麻烦
r'[1-9]\d{5}':邮政编码的正则表达式
主要的功能函数
re.search():在一个字符串中搜索匹配正则表达式的第一个位置,返回一个match对象
re.match():在一个字符串开始位置匹配正则表达式,返回一个match对象
re.findall():搜索字符串,以列表类型返回所有匹配的字串
re.split:将一个字符串按照正则表达式的匹配结果进行分割,返回列表类型
re.finditer():搜索字符串,返回一个匹配结果的迭代类型,每个迭代元是match对象
re.sub():在一个字符串中,替换所有匹配正则表达式的字串,返回替换后的字符串