什么是正则表达式?
百度百科说:"正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
正则表达式的应用场景有哪些?
特定规律字符串的查找,切割、替换等 特定格式(邮箱、手机号、IP、URL等)的校验 爬虫项目中,提取特定内容
在python中使用正则表达式对语句解析,需要借助re模块,re下的相关函数有如下
函数 功能 match 只从开头进行匹配,匹配到就返回结果对象,没有找到返回None search 从任意位置匹配,功能同上,都是单次匹配,找到一个就停止匹配 findall 全部匹配,返回所有匹配的到结果列表,没有找到返回空列表 compile 创建正则表达式对象,可以让创建正则对象和内容匹配分开操作
正则表达式中的常用语法
普通字符匹配 一对一完全匹配 [ ]: 中间的任意一个字符 . 除’\n’以外的任意字符 \d 数字字符,等价于[0-9] \D 非数字字符,等价于[^0-9] \w 匹配字(数字、字母、下划线) \s 空白字符(\n、\r、\t、空格) \S 非空白字符(\s相反的内容) \b 词边界(开头、结尾、空格、标点) \B 非词边界(\b相反的内容)
次数限定 修饰前面的单个字符出现的次数 * 任意次 + 至少一次 ? 至多一次 {m} 指定m次 {m,n} m <= 次数 <=n {m,} 至少m次 {,m} 至多m次
贪婪匹配 贪婪 最大限度的匹配。正则的匹配默认是贪婪的 非贪婪 只要满足条件,能少匹配就少匹配。可以使用’?'取消贪婪
正则切割
import re
c = re. compile ( r'\d' )
string = '世界上最遥远的距离1不是天涯海角2而是3我站在你面前4你却不知道我爱你'
ret = c. split( string)
print ( ret)
print ( re. split( r'\d' , string) )
正则替换
string = 'ffbloverbfyrloveefbyrefierhfhielovedhewu'
new_string = string. replace( 'love' , 'like' , 2 )
print ( new_string)
import re
s = 'I1love2you'
def double ( s) :
return str ( int ( s. group( ) ) * 2 )
s2 = re. sub( r'\d' , double, s)
print ( s2)