day_18正则表达式

1.正则表达式

1.1作用

正则表达式是用来匹配或描述字符串的工具
1.判断输入的字符串是否符合要求,如是否是邮箱/手机号码
2.提取满足条件的内容
3.字符串替换

1.2 re模块

python中通过re模块中相应的方法来支持正则表达式的匹配、查找何替换功能from re import fullmatch
fullmatch(正则表达式,字符串)--->判断正则表达式和字符串是否完全匹配
正则表达式字符串:就是一个字符串,字符串中是正则表达式语法
正则表达式中包含2个部分:一个是正则表达式对应的字符,一个是普通字符

r = r"\wdk"
print(fullmatch(r,"1dk"))

re.fullmatch(re_str,str),完全匹配,不完全匹配时返回None

1.3正则表达式语法

用r阻止转义

. :匹配一个任意字符 r"a.b"
\w:匹配一个字母数字下划线,r"a\wb" acb,a_b,a9b
\W:匹配非字母数字下划线
\s:匹配一个不可见字符,空格,制表符,回车
\S:匹配非空白字符
\d:匹配一个数字字符
\D:匹配非数字字符
\b:检查\b出现的位置是否是一个单词边界,只是检查,不代表字符,\b左右不是单词边界就是None.如ab\bds。是单词边界:ab\b ds
\B:检查是否不是单词边界
单词边界:字符串开始结束,空格,换行,标点符号,把2个单词隔开的字符就是单词边界
^:检查字符串开头
$:检查字符串结尾
[字符集]:匹配一个字符,这个字符是中括号中的任意一个字符:r"[abc]abc" aabc,babc,cabc
[字符1-字符2]匹配一个字符,这个字符的Unicode编码值中字符1和2之间
字符1的unicode比字符2 的小。
[1-3]ab 1ab 2 ab 3ab
中文Unicode范围:4E00-9FA5
"-”不放在2个字符之间就是“-” r"sdk-"
[^字符集]:匹配一个不再字符集中的任意字符
注意:^必须放在中括号最前面才有效

1.4次数相关符号

* :匹配0次或多次,*前要有一个字符。\d*kkdj
+:匹配一次或多次,前面要有一个字符,\d+kdj
?:匹配一次或0次。 a?123
{N}:匹配N次 \w{10}
{M,N}:匹配M到N次
{M,}:至少匹配M次
{,N}:最多匹配N次

1.5分支和分组

分支:条件一|条件二--->先用条件一去匹配,如果失败,就用条件二。
abc(ab|dh|sjf)
()分组:
a.组合:将括号中的内容作为一个整体进行操作
b.捕获:使用带括号的正则表达式匹配成功后,只获得括号中的内容
c.重复:在正则表达式中可以通过\数字n来重复前面第n个()中匹配到的结果

import re
r = r"(a)-(b)(c)(\1\2)23"
print(re.fullmatch(r,"a-bcab23"))

转义字符
正则表达式可以在特殊符号前加\,来让特殊的符号没有意义
注意在中括号中不用转义,就表示该符号,例外的是 “\”和“-”,要用\,-转义

import re
r = r"[3\-5\\]"
print(re.fullmatch(r,"-"))
print(re.fullmatch(r,"\\"))
print(re.fullmatch(r,"3"))

1.6 re模块中的函数

** compile(正则表达式字符串):** 将正则表达式字符串转换成正则表达式对象
fullmatch(正则表达式字符串,字符串):用正则表达式去完全匹配整个字符串,返回匹配对象;
match()
span ()获取匹配成功的下标(4,9)4开始,有4,没有9。
print(result.span())
group()获取完全匹配的匹配结果
group(index>0)获取正则表达式中第index个分组匹配到的结果
`print(result.group())
string:获取被匹配到的原字符串
search(正则表达式,字符串):查找字符串中满足正则表达式的第一个字符,返回第一个匹配结果,或者None
findall(正则表达式,字符串)--->获取字符串中满足正则表达式的所有子串。如过正则表达式中有分组,取值的时候只取分组中匹配到的结果 ,如果有多个分组,会将每个分组作为一个元祖的元素

import re
r = r"(\d)k(\d)"
s1 = "2k1j32j3k5j5"
print(re.findall(r,s1))
#[('2', '1'), ('3', '5')]

finditer(正则表达式,字符串):查找所有满足正则条件的子串,返回的是迭代器,迭代器中的元素是匹配对象
split(正则表达式,字符串): 将字符串按照满足正则表达式的子串进行分割
sub(正则表达式,repl ,字符串): 将字符串中满足正则表达式的子串替换成repl
.+?:用尽可能少.的匹配

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

推荐阅读更多精彩内容