正则表达式:查找,分割,替换
(1)正则表达式:查找
**(1.1)查找一个匹配项:
**查找并返回一个匹配项的函数有3个:search,match,fullmatch。这3个函数的区别在于:
search:查找任意位置的匹配项;
match:必须从字符串开头匹配;
fullmatch:整个字符串与正则完全匹配
案例1:
import re text='我爱你呀' pattern=r'我爱你呀' print('search:',re.search(pattern,text)) #search:查找任意位置的匹配项 print('match:',re.match(pattern,text)) #match:必须从字符串开头匹配 print('fullmatch:',re.fullmatch(pattern,text)) #fullmatch:整个字符串与正则完全匹配
运行结果为:列出text中与pattern匹配的项的初始位置(0),结束位置(5)和匹配项。 search: <re.Match object; span=(0, 4), match='我爱你呀'> match: <re.Match object; span=(0, 4), match='我爱你呀'> fullmatch: <re.Match object; span=(0, 4), match='我爱你呀'>
将上面的例子稍作改变,注意比较结果哦:
案例2:
import re text='a我爱你呀' pattern=r'我爱你呀' print('search:',re.search(pattern,text).group())#通过补充“.group()”获取匹配值。 print('match:',re.match(pattern,text)) print('fullmatch:',re.fullmatch(pattern,text))
运行结果为:
search: 我爱你呀 match: None #text开头加了个a,因此匹配失败 fullmatch: None
(1.2)查找多个匹配项:
查找并返回多个匹配项的函数有2个:findall函数与finditer函数。这两个函数的区别在于:
findall:从字符串任意位置查找,返回一个列表。
finditer:从字符串任意位置查找,返回一个迭代器。
案例3:
import re text='a我爱你呀,我爱你呀' pattern=r'我爱你呀' print('findall:',re.findall(pattern,text)) print('finditer:',list(re.finditer(pattern,text)))
结果为:
findall: ['我爱你呀', '我爱你呀'] finditer:[<re.Match object; span=(1, 5), match='我爱你呀'>, <re.Match object; span=(6, 10), match='我爱你呀'>]
(2)正则表达式:分割
语句:re.split(pattern, string, maxsplit=0, flags=0)
该函数中:用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,就是上面我们讲解的常量。
案例4:
text='A你说a,B我像云捉摸不定b,c其实你不懂我的心' pattern=r',' #正则分割 print('split:',re.split(pattern,text,maxsplit=1,flags=re.I))#逗号分割,分割1次,re.I不区分大小写
运行结果为:
split: ['A你说a', 'B我像云捉摸不定b,c其实你不懂我的心']
(3)正则表达式:替换
替换主要有sub函数 与 subn函数,他们功能类似!
先来看看sub函数的用法:
re.sub(pattern, repl, string, count=0, flags=0)
函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量。
值得注意的是:sub函数中的入参:repl替换内容既可以是字符串,也可以是一个函数哦! 如果repl为函数时,只能有一个入参:Match匹配对象。
先来看看subn函数的用法:
re.subn(pattern, repl, string, count=0, flags=0)
函数与 re.sub函数 功能一致,只不过返回一个元组 (字符串, 替换次数)。
案例5:
text='A你说a,B我像云捉摸不定b,c其实你不懂我的心' pattern=r',' repl='@' #repl为字符串。用‘@’替换‘,’ print('sub-repl为字符串:',re.sub(pattern,repl,text,count=1,flags=re.I)) #该语句运行结果为:sub-repl为字符串: A你说a@B我像云捉摸不定b,c其实你不懂我的心 print('subn-repl为字符串:',re.subn(pattern,repl,text,count=1,flags=re.I)) #运行结果为:subn-repl为字符串:('A你说a@B我像云捉摸不定b,c其实你不懂我的心', 1)。可以看出结果为元组。
- python 正则表达式 字符串的 匹配 替换 分割 查找
- Python 正则表达式 字符串的匹配、替换、分割、查找
- 正则表达式的应用 匹配、查找、分割、替换
- 正则表达式几种常用功能——查询,提取,替换,分割
- Dreamweaver中使用正则表达式查找替换
- Dreamweaver的正则表达式查找替换功能(转)
- vs 2012/2013 等工具中,使用正则表达式,查找、替换
- 在UltraEdit的查找和替换中使用正则表达式 (转)
- Myeclipse中使用正则表达式查找替换
- Visual Studio 中使用正则表达式来进行查找替换
- visual studio 正则表达式 查找 替换
- 对字符串的查找,剪切,替换,提取(正则表达式)
- eclipse 正则表达式查找替换
- JAVA正则表达式匹配,替换,查找,切割
- dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法
- editplus查找替换的正则表达式应用
- 正则表达式匹配,替换,查找,切割的方法
- UltraEdit的正则表达式查找与替换
- visual studio 正则表达式查找替换
- 在UltraEdit的查找和替换中使用正则表达式 (转)