第43天python学习re模块学习
Posted jianchixuexu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第43天python学习re模块学习相关的知识,希望对你有一定的参考价值。
#之前可以进行对字符串进行完全匹配
#回顾:python中字符串是不可变对象,所以所有修改和生成字符串的操作的实现方法都是另一个内存片段中新生成一个字符串对象
import re
#re正则方法:是针对字符串进行模糊匹配操作的。正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集
# 成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
#使用场景:身份证,14亿人找到北京市90年的人
#1、元字符: .^ $ * + ? [] |()\
#"."通配符,需要字符串里完全符合,匹配规则,就匹配,(规则里的.元字符)可以是任何一个字符,匹配任意除换行符"\n"外的字符(在DOTALL模式中也能匹配换行符)
# data=re.findall("g...d","sadajsgongdsa")#表示g开头中间为任意的三个字符,结尾为d的输出
# print(data)
#2、"^"尖叫符号:只能匹配开头的
# data=re.findall("^s...j","sadajsgongdsa")#^整个字符串开头必须是s,匹配的只能从开始匹配,需要一一对应(字符串位数一样),开始和结尾对于上
# print(data)#结果为:[‘sadaj‘]。
#3、“$”$符号需要匹配到结尾的
# data=re.findall("s...j$","sadajsgonjgdssdaj")#整个字符串结尾必须是j,需要一一对应(字符串位数一样),开始和结尾对于上
# print(data)#结果为:[‘sadaj‘]。
#4、当中间"."太多的时候处理方法:重复符号:* + ?
#重复符号:*匹配的是0到无穷次
# data=re.findall("s*","sadajsgonjgdssdaj")#*代表0到无穷次。
# print(data)#结果:[‘s‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘s‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘ss‘, ‘‘, ‘‘, ‘‘, ‘‘]
#重复符号:+匹配的是1到无穷次
# data=re.findall("sdaj+","sadajsgonjgdssda")#*代表1到无穷次。
# print(data)#[]
#
# data=re.findall("sdaj*","sadajsgonjgdssda")#*代表0到无穷次。
# print(data)#[‘sda‘]
#重复符号:?匹配的是0到1次
# data=re.findall("sdaj?","sadajsgonjgdsda")#*代表0到1穷次。
# print(data)#[‘sda‘]
# “* +”贪婪匹配
# data=re.findall("sdaj*","sadajsgonjgdssdajjjj")#*代表0到无穷次。
# print(data)#[‘sdajjjj‘]
#转成不是贪婪匹配
# data=re.findall("sdaj*?","sadajsgonjgdssdajjjj")#*代表0到无穷次,但是?表示0到1,* ?同时取到最少0。
# print(data)#[‘sda‘]
#5、的作用包括了(* + ?)的用法
# data=re.findall("sdaj6","sadajsgonjgdsdajjjjjj")#*代表重复出现6个j。
# print(data)#[‘sdajjjjjj‘]
#
# data=re.findall("sdaj0,6","sadajsgonjgdsdajj")#*代表0到6的范围。
# print(data)#[‘sdajj‘]
#6、"[]"字符集:
# data=re.findall("x[y z]","xsjdaxyjjxz")#[]表示或的意思,只要有xy xz就输出
# print(data)#[‘xy‘, ‘xz‘]
#"[]"字符集:里面没有特殊符号,有特殊意义的:"-"表示a-z "^"表示非 “\”表示:可以把有功能的转换成没有功能 把无功能的变为有功能
# data=re.findall("x[y * z]","xsjdaxyyyjjxz")#[]表示或的意思,只要有xy xz就输出,虽然有*号但是?特殊符号y不会重复
# print(data)#[‘xy‘, ‘xz‘]
# data=re.findall("x[a-z]","xsjxdaxyyyjjxz")#x开头第二位a-z都可以
# print(data)#[‘xs‘, ‘xd‘, ‘xy‘, ‘xz‘]
# data=re.findall("x[^a-z]","xsjxdaxyyyjjx9")#表示:除了a-z以外的
# print(data)#[‘x9‘]
#7、“\”可以把有功能的转换成没有功能 把无功能的变为有功能。本来d D s S等无功能的,只是一个字符,但是加"\"就有功能了
#\d匹配任何十进制数,它相当于类[0-9],\d+如果需要匹配一位或者多位数的数字时用
#\D匹配任何非数字字符,它相当于类[^0-9]
#\s匹配任何空白字符,它相当于类[\t\n\r\f\v]
#\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]
#\w匹配包括下划线在内任何字母数字字符,它相当于类[a-zA-Z0-9_]
#\W匹配非任何字母数字字符包括下划线在内,它相当于类[^a-zA-Z0-9_]
# \b匹配一个单词边界,也就是指单词和空格间的位置
#8、
#2、6个函数
以上是关于第43天python学习re模块学习的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# Python 内置模块之 re 库,一文搞定正则表达式初阶用法,滚雪球学 Python 第 13 篇