正则表达式

常用方法

findall:

匹配所有符合规律的内容,并且返回的是一个列表

search:

匹配第一个符合规律的内容,返回一个正则对象

Sub:

替换符合规律的内容,并返回

用法解析

"."的用法:

import re
#from re import findsll#do not use this in a large project
s = 'hhhhxyxy'
a = re.findall('x.',s)
b = re.findall('x...',s)
print(a)
#['xy','xy']返回的列表中存储的是所有符合规律的
print(b)
#['xyxy']

可以得到dnot是一个占位的符号

"*"的用法:

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('x*',s)
print(a)
#['', '', '', '', 'x', '', 'x', '', '']

*表答的是前面的元素出现0次或者多次所以

"?"的用法:

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('h?',s)
print(a)
#['h', 'h', 'h', 'h', '', '', '', '', '']

?是匹配前面的字符一次或者0次

"{ }"的用法

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('h{2}',s)
print(a)
#['hh', 'hh']

可以控制匹配h的数量
举个例子:

import re
#from re import findsll
s = '123hhh456'
a = re.findall('1.{3}',s)
print(a)
#['123h']

匹配的是1后面占位的3个符号

".?","(.?)",".*"的用法:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaa'
a = re.findall('xx.*xx',s)#贪心的匹配尽可能匹配的长但是数量少
b = re.findall('xx(.*?)xx',s)#不贪心少儿多‘()’返回的是括号里的
c = re.findall('xx.*?xx',s)#不贪心
print(a)
print(b)
print(c)
#print(a):['xxabcdxxxxasdsxxaxxdasxx']
#print(b)['abcd', 'asds', 'das']
#print(c)['xxabcdxx', 'xxasdsxx', 'xxdasxx']

re.S的用法:

import re
#from re import findsll
s = '''aaaxxabcdxxxxasdsxxaxxdasxxaaaxx
asdxxasdasd'''
a = re.findall('xx(.*?)xx',s)
b = re.findall('xx(.*?)xx',s,re.S)
print(a)
print(b)
#['abcd', 'asds', 'das']
#['abcd', 'asds', 'das', '\nasd']

可以看出re.S将"."的匹配范围扩大到了换行符。原来的"."号是没有换行符的

search的用法:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaaxx'
a = re.search('xx(.*?)xx',s).group(1)
print(a)
#abcd

search的group(1)表示的是第一个括号里的内容
如果有多个括号贼为多个括号里的内容

findall返回值:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaaxx'
a = re.findall('xx(.*?)xxxx(.*?)xx',s)
print(a[0][1])
#asds

可以看出来a为一个list而如果每一个list的元素中有多个"()"则每一个list的元素为
一个tuple

sub的用法:

import re
#from re import findsll
s = '123aaa123123xxx123'
a = re.sub('123.*123','hello',s)

print(a)
#hello

sub 返回的是一个字符串,并且是将原文匹配的所有改变之后的字符串
sub是将匹配的部分改变并且拼接起来

import re
#from re import findsll
s = '123aaa123123xxx123'
a = re.sub('123.*?123','hello',s)
b = re.sub('123.*123','hello',s)
print(b)#hello
print(a)#hellohello

由于.是贪婪匹配所以匹配的是整体字符串123aaa123123xxx123 替换成hello
而.
?是非贪婪所以匹配出两个并且拼接hellohello

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

推荐阅读更多精彩内容

  • re模块手册 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以...
    喜欢吃栗子阅读 4,000评论 0 13
  • 正则表达式有很多流派,也有很多的特性,不同的语言支持度也是不一样的。本篇文章是写Python中的正则表达式的用法的...
    Moscow1147阅读 1,096评论 0 0
  • 蝎说:行李是负担你的背包载满纪念品和患难让我走得……好缓慢 行李是新的旅行旧的相框前任送的香水往日生活的丝丝气味打...
    鱼与蝎的同名作阅读 314评论 0 0
  • 雪乡,学名双峰林场,位于黑龙江省海林市长汀镇,这里雪期长、降雪频多繁积。雪期长达7个月,雪量堪称中国之最,且雪质好...
    北海源阅读 3,524评论 171 121
  • 【日更194】 在网上看到几张引起热议的图片: 看完之后,请问有什么感想? 首先我觉得应该对这条新闻的“真实性”保...
    唐斩2086阅读 297评论 0 1