正则表达式 一遍文章啥都有了~~~

正则表达式

实质:从一串字符串中提取出需要的字符
import re  # 加载正则表达式模块

#re.findall(参数1,参数2,参数3)  
# 参数1表示用什么规则进行提取,
# 参数2表示从哪个字符串进行提取
# 参数3一般有re.I 表示不区分大小写,re.S 匹配多行中满足条件的值

# . 通配符,匹配某个字符前面或后面的一个字符
# str1='abcdefg'
# print(re.findall('a.',str1))  #提取a后面的一个字符,返回值是列表,包括条件a也返回
# print(re.findall('a(.)',str1))   #提取a后面的一个字符,返回值是列表,不包括条件a

# * 通配符,匹配某个字符后面的若干个字符,若干也包括0个的情况
# str1_1='abcdabbcbbbbeafg'
# print(re.findall('ab*',str1_1))  #把所有a后面有若干个b的字符找出来,包括0个b的情况

# ? 通配符,匹配某个字符串后面有0-1个字符
# str1_2='abacabbbbbd'
# print(re.findall('ab?',str1_2))

# + 通配符,匹配某个字符串后面有一个或多个字符,不包括0个的情况
# print(re.findall('ab+',str1_2))


# 懒惰匹配和贪婪匹配 #####################
# .*?  提取字符串两端之间的内容  A(.*?)B
load1='一二三四五六七八九'
# print(re.findall('三(.*?)六',load1))
# 如果只有一端给出了条件,值会怎么取?
# print(re.findall('三(.*?)六',load1))  #懒惰匹配,在符合查询要求的情况下,尽可能少的匹配
# print(re.findall('(.*?)六',load1))  #需要匹配的字符串后面是'六',无法偷懒

# 只给出一端的条件时,如果希望获取后面全部的结果,则应当使用贪婪匹配
# print(re.findall('三(.*)六',load1))  #贪婪匹配

# 当有多个满足条件的值时,两者的结果并不相同
# load1='一二六三四五六三七八九六'
# print(re.findall('三(.*?)六',load1))  #懒惰匹配
# print(re.findall('三(.*)六',load1))  #贪婪匹配

# 如果没有满足条件的查询,返回空列表
# print(re.findall('九(.*?)一',load1))  #懒惰匹配
# print(re.findall('九(.*)一',load1))  #贪婪匹配

# \w{n}  匹配字母,数字,下划线,n表示连续满足条件的位数
# str3='nyrbt'
# print(re.findall('\w{3}',str3))

# \W 匹配\w的补集
# str3_new='ny#$%rbt'
# print(re.findall('\W{3}',str3_new))

# \s 匹配空格,换行符\n,制表符\t
str6='''小娃撑小艇,
偷采白莲    回.
不解藏踪    迹,
浮萍一道    开
'''
# print(re.findall('\s',str6))
#\S \s的补集
# print(re.findall('\S',str6))

# ^匹配开头,$匹配结尾
# list1=['abcde','deabc','fabcf']
# for one in list1:
#     if re.findall('^abc',one):  #匹配以abc开头的字符串
#         print(one,'以abc开头')
#     elif re.findall('abc$',one):  #匹配以abc结尾的字符串
#         print(one,'以abc结尾')

#re.I  不区分大小写
# req='AbcabcABcaBCabCABC'
# print(re.findall('abc',req,re.I))

#re.S 匹配多行中符合条件的值
# req2='''hellounyrbtyutnhbgumynhbg
# ,imyuntbuimyuntybr
# 68,imyuntybrytnuymi,oumworld'''
# print(re.findall('hello(.*?)world',req2,re.S))

posted @ 2021-12-30 10:57  太白之魔童降世  阅读(1)  评论(0)    收藏  举报