re库
re库
即正则表达式
主要⽤re.search(expression,text)
1.字符
# \d == [0-9],数字或空字符串
# \D == [^0-9]
# \w == [a-zA-Z0-9_],1个字符或_,可以匹配汉字,不匹配标点
# \W == [^a-zA-Z0-9_]
# \s 空白,即空格,tab
# \S 非空白
# . 任意一个字符,除了\n
# [] 列举的任意1个字符
# [^] 反列举任意一个字符,注意[^]也会占一个位置
2.数量符
#可与\d,\w等一起用,出现表示包括自己共有
# * 前一个字符出现0次或多次
# + 前一个字符出现1次或多次
# ? 前一个字符出现0或1次
# {m} 前一个字符出现m次
# {m.} 前一个字符至少出现m次
# {m,n} 前一个字符出现m到n次
3.边界符
# ^ 表示匹配字符串开头,放到最前面,注意与[^]反列举的区别。在match中,因为match是从左
# $ 匹配字符串结尾,放到最末尾
# \b 匹配一个单词的边界,即空格,标点或一行的顶头,注意只表示在边界,匹配时正则里还要写
# \B 匹配非单词边界
4.匹配分组
# | 表达或的关系,匹配 | 左右任意一个表达式或 exp0(exp1|exp2|exp3)exp4,匹配括号内
# (ab) 将括号中字符作为一个分组,从字符串中提取特定部分
# \n 引用第n个分组所匹配到的字符串
# (?P<name>) 分组起别名,防止括号过多出错,正则表达式写到<>后,引用时用(?P=name)
# (?P=name) 引用别名为name的分组匹配到的字符串
5.贪婪模式
# 所有语言的正则表达式的 * + ? {m,n} 都默认贪婪模式
# s = "<p>大数据,数理统计,sklearn,高性能。</p>
# <p>推荐算法、数据统计、接口</p>
# <p>1、后台服务器,一年以上python开发经验</p>
# <p>2、掌握http协议、熟悉MVC、MVM等命令</p>
# "
# print(re.sub(r"<.+>", "", s))#用.+表示尖括号里所有内容,输出内容会只剩下\n\n\n
# print(re.sub(r"<\w+>", "", s))
#贪婪就是只要能符合规则,就尽可能多的匹配,可以是.的都先认为是.
#匹配到 < 时开始,找到 > 时并不停止,而认为是 . 直到找到一行的最后一个非 . 内容\n
#而\n前又恰好是 > ,所以它默认最后一个 > 是 > ,前面的 > 是 .
# 在* ? + {m,n}后面加上 ? 可以关闭贪婪模式,表示要求数量符匹配到的越少越好
# s = "This is a number 234-235-423"
# print(re.match(r"(.+)(\d+-\d+-\d+)", s).groups()) #在贪婪模式下,会把23匹配到
# print(re.match(r"(.+?)(\d+-\d+-\d+)", s).groups())