day 16

part 1 正则表达式

正则表达式:用来做字符串查找、匹配、切割的一种工具。
Python对正则表达式的支持,提供re模块(Python内置的模块)
包含字符串匹配,查找,切割的相关的方法
fullmatch(正则表达式,字符串):用正则表达式和字符串进行
匹配,看能否成功匹配。
正则表达式:是一个符合正则规范的字符串

import re
#正则表达式的字符串前面要加r阻止转义,
# 因为正则表达式的符号中有很多带转义符号,
# 其功能不是转义,而是表示特殊的意义。
#1. .:匹配一个任意字符
re_str = '.'
re.fullmatch(re_str, 'a')
#2.匹配第一个字符是a第二个字符是b
re_str = 'ab'
re_str = 'a.'
#3匹配第一个字符是a第二个字符是任意字符的字符串
re_str = r'a.'
#4.\w:匹配一个字符是字母,数字,或者下划线
re_str = r'\w'
print(re.fullmatch(re_str,'b'))
#5.\s匹配一个空白字符(空格、换行、制表符))
re_str = 'ar\sb'
#\d 匹配一个数字字符
re_str = '\d\d\d'
print(re.fullmatch(re_str,120))
#6.边界检测
\b
#字符开开始和结束都是边界
#匹配三个任意字符的前面和后面都是单词边界的字符串
#^匹配字符串的开始
#(^the)匹配以the为开头的字符串
re_str = r'^the'
print(re.fullmatch(re_str,'the'))
#7.匹配字符串结束
re_str = r'abc$'
#8.\W 匹配非数字字母下划线

#9.\S匹配非空白字符
#10\D匹配非数字字符
#11\B 检测非边界
re_str = r'ab\B

part 2

import re

"""

1.匹配中括号中出现的任意一个字符
匹配一一个字符串,前三位是abc,第四位是字符1或者字符a
"""
re_str = r'abc[1a]'
print(re.fullmatch(re_str, 'abca'))

#第一个是数字或者下划线,后面是abc
re_str = r'[\d_]abc'
print(re.fullmatch(re_str, '9abc'))

#2.[^]匹配不在中括号中出现的任意一个字符
re_str =r'abc[^\da]'
#匹配一个字符串,前三位是abc,第四位不是数字字符也不是字符a

#3.*匹配0次或者多次
re_str =r'\d*abc'
#匹配一个字符串前面是0个或者是多个数字字符,然后是abc
# [0-9]匹配1到9
# [a-z]匹配小写字母a-z
# [A-Z]匹配任意一个大写字母
#[a-zA-z]匹配任意字母
#写一个正则表达式匹配判断一个字符串是数字字符串
re_str = r'\d[0-9]*'
print(re.fullmatch(re_str, '123'))

#写一个正则表达式检测一个字符串是否是合格的标识符(字母数字下划线)
re_str = r'[a-zA-z_]\w*'
print(re.fullmatch(re_str, 'name'))
#4.+:匹配一个字符串或者多次
#匹配一个字符串开头出现一个或者多次数字字符,然后在有0次或者多次数字,字母,下划线
re_str = r'\d+\w*'
print(re.fullmatch(re_str, '12u3abc'))
#5.?:匹配出现0次或者1次
re_str = r'[a-z]?123'
print(re.fullmatch(re_str, 'a123'))

#判断一个字符串是不是正整数字符串
re_str = r'[+]?[1-9]\d*'
print(re.fullmatch(re_str, '+0123'))
#6匹配N次{N}
re_str = r'\d{5}abc'
#前面5个数字然后abc

#6.{n,} >=n次
#7,{m,n}最少M次最多N次
#8 |:分支
#匹配一个字符串,是三个数字字符或者三个小写字母
re_str = r'\d{3}|\[a-z]{3}'

#9括号()匹配的时候是分组,让括号中的正则条件变成一个整体
  """========以下了解========"""
    # 尽可能少:在能够匹配到的前提下尽可能少
    # 10. *? 重复任意次,尽可能少的重复
    re_str = r'ba*?b'
    print(re.match(re_str, 'baabaa'))

    # 11. +? 重复一次或多次,尽可能少的重复
    re_str = r'ba+?'
    print(re.match(re_str, 'baaaa'))

    # 12. ?? 重复0次或者1次, 尽可能少的重复
    re_str = r'b??'

    # 13. {N,}? 重复至少N次,尽可能少的重复
    # 14. {N, M}? 重复N到M次,尽可能少的重复

part 3 转义

1.特殊符号转义
正则中:. \ [] {} () * + ? ^ $ | 这些字符有特殊意义,所以在正则表达式中,
如果想要单纯表达这些字符,需要在前面加'';

注意:1. -,[],^,\ 在中括号中可能是特殊的符号,需要加
2. . {} () * + ? $ |在中括号中可以不用加,来表示字符

part 4 模块方法

import re
"""
1.compile(正则字符串)讲正则表达式字符串转换成正则表达式对象
#转换成正则表达式对象后,可以通过对象调用方法。
"""
re_obct = re.compile(r'\w{6,12}')
print(re_obct.fullmatch('dwadwa'))

#匹配相关的方法
#2.full,match(正则表达式,需要匹配的字符串)完全匹配
#返回值是匹配对象,如果不成功返回None
match = re.fullmatch('\w{3}', '132')
print(match)
#a.获取匹配到的结果
print(match.group())
#b.获取匹配到的范围
print(match.span())
print(match.start())#开始下标
print(match.end())#结束下标
print(match.string)
#3.match(正则表达式,字符串)不完全匹配,从字符串开头匹配,匹配到正则表达式对应的范围为止。
match = re.match(r'\w{3}', 'hedslakdl')
print(match.group())
print(match.string)
#应用:判断一个字符串是否以某种字符串开头
#4.search(正则表达式,字符串)在指定的字符串中查找某种字符串(以正则表达式来描述)
print(re.search(r'\d{2,}[a-z]', '1245465dwad113'))

#返回值是匹配对象,如果找不到返回None
#判断一个字符串中是否包含某种字符串

#5.findall(正则表达式,字符串)获取指定字符串中所有满足正则条件的所有的子串
#返回值是一个列表,列表里都是符合要求的字符串
result = re.findall(r'[a-zA-Z](\d+)','a132bdwa456465dwa')
print(result)
#注意:在通过正则表达式获取子串的时候,可以通过在正则表达式中添加括号,来约束获取的内容(只获取括号中匹配的内容)匹配所有。
#应用:字符串提取
#括号语法无效
result = re.finditer(r'[a-zA-Z](\d+)','a132bdwa456465dwa')#返回一个迭代器,迭代器的内容是匹配对象
print(result.__next__())

#7.re.split(正则表达式,字符串)按正则表达式匹配到的字符串进行切割
result = re.split(r'/d+', '12ds4a364dsa4d3sa15')
print(result)
#sub替换(正则表达式,替换字符串,原字符串)原字符串查找符合正则的子串,替换成新的字符串
#将制定字符串所有的SB替换成*
str1 = '傻逼,你好sb,你全家都是SB,傻逼,傻子'
result = re.sub(r'sb|SB|Sb|sB|傻逼|傻', '**', str1)
print(result)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容