版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyb3b3b/article/details/82316623
re.sub()正则替换,替换字符
re.sub(要替换的字符,替换后字符,目标字符串,替换个数),返回值为全部替换后的字符串
与python的内置函数replace()一样
import re
language = 'PythonC#JavaC#PHPC#'
r = re.sub('C#','GO',language)
print(r)
#输出PythonGOJavaGOPHPGO
b=language.replace('C#','GO')
print(b)
#输出PythonGOJavaGOPHPGO
上例中,替换个数默认为0,代表所有的都替换,加入替换个数参数 count=1
import re
language = 'PythonC#JavaC#PHPC#'
r = re.sub('C#','GO',language,count=1)
print(r)
#输出PythonGOJavaC#PHPC#
结果就只把第一个C#给替换了
re.match()和re.search()
re.match()
从字符串的起始位置匹配,若起始位置不符合正则表达式,则返回空 re.search()
搜索整个字符串,返回第一个匹配的结果
r = re. search ( regex, string)
两个函数若都能匹配到结果,那么返回的结果也是一个match对象
match对象的方法除了有group()
之外还有span()
方法,可以返回匹配结果的位置
而re.findall()
方法就是把所有的匹配结果返回
import re
language = 'PythonC#JavaC#PHPC#'
r = re.search('C#',language)
print(r)
#输出match对象
#<_sre.SRE_Match object; span=(6, 8), match='C#'>
if r:
print("可以寻找到")
#输出:
#可以寻找到
re.findall() 查找字符
从字符串中找出所有符合模式的字符序列:findall(模式(正则表达式),目标字符串)
, 返回值为list类型,list元素为匹配出的各个字符串
import re
a = "java|python129以及年份2018"
b = re.findall("java", a)
c = re.findall("\d",a)
d = re.findall("[1-2][0-9]{3}",a) #{3}代表重复三次
print(b,c,d)
#输出:
#['java']
#['1', '2', '9']
#[2018]
re.split分割字符串
可以使用re.split来分割字符串,如:re.split(r’\s+’, text);将字符串按空格分割成一个单词列表。
原型:
re.split(pattern, string, maxsplit=0)
通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。
例如:
re.split('\W+', 'Words;, words, words.')
['Words', 'words', 'words', '']
#大写W为非字符
re.split('(\W+)', 'Words;, words, words.')
['Words', ';, ', 'words', ', ', 'words', '.', '']
#pattern也在结果列表里
\w+ 单词字符
\W+ 非单词字符