Python正则表达式学习心得及总结
re模块方法
1、re.compile(pattern, flags):创建模式对象
2、re.match((pattern, string, flags): 尝试从字符串string开始的位置匹配一个模式,如果在起始位置匹配成功,返回match对象,匹配不成功的,则返回None。
3、re.search(pattern, string, flags):扫描整个字符串string,如果成功,返回第一个成功匹配match对象,否则返回None。
4、re.findall(pattern, string, flags=0):扫描整个字符串string,并返回成功匹配结果列表。
其中以上4个方法参数值:
pattern:要匹配的正则表达式
string: 要匹配的字符串
flags标志位,用于控制正则的的匹配方式,主要分6种匹配方式:
re.I 忽略大小写
re.L 做本地化识别
re.M 多行匹配,影响^和%
re.S 匹配包含换行符的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的方式理解正则
另外还有两个比较常用的方法:
5、re.split(pattern, string, maxsplit=0):根据模式匹配项分割字符串string,返回分割后的列表,其中maxsplit参数指定分割的最大次数。
6、re.sub(pat, repl, string):将字符串string中所有pat的匹配项,用repl替换。
例子展示:
可以先将模式编译,产生一个正则表达式对象,然后用正则表达式对象提供的方法进行字符串处理
text="Python is a free, open source, cross platform advanced dynamic programming language."
pattern=re.compile(r'\bp\w+\b',re.I) #编译正则表达式对象,查找以p/P开头的单词
pattern.findall(text)
>>>['Python', 'platform', 'programming']
pattern.match(text)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>
pattern.search(text)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>
也可以不编译,直接采用re模块方法进行字符串处理:
text="Python is a free, open source, cross platform advanced dynamic programming language."
re.findall(r'\bp\w+\b',text,re.I)
>>>['Python', 'platform', 'programming']
re.match(r'\bp\w+\b',text,re.I)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>
m=re.match(r'(\w+)\s(\w+)\s(\w+)\s(\w+)',text) #将match对象赋值给m
m.group(0) #match对象的group(0)方法返回匹配的所有子模式的内容
>>>'Python is a free'
m.group(1). #返回第一个子模式内容
>>>'Python'
m.group(1,2,3). #返回指定的多个子模式的内容
>>>('Python', 'is', 'a')
re.split(r'\,?\s?\.?',text) #用任意空白字符或者‘,’或者'.'将字符串分割
>>>['Python', 'is', 'a','free','open','source','cross','platform',
'advanced','dynamic','programming','language','']
re.sub('r'\s'','*',text) #用“*”替换空格
>>>'Python*is*a*free,*open*source,*cross*platform*advanced*dynamic*programming*language.'
本文总结了Python中re模块的关键方法,包括re.compile()、re.match()、re.search()、re.findall()、re.split()和re.sub()。通过这些方法,可以实现正则表达式的匹配、查找、分割和替换等功能。文章还提到了正则表达式的匹配模式,如忽略大小写、多行匹配等,并提供了实例来说明其用法。
1118

被折叠的 条评论
为什么被折叠?



