re.sub●search●findall●split

版权声明:本文为博主原创文章,未经博主允许不得转载。 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+ 非单词字符

猜你喜欢

转载自blog.csdn.net/lyb3b3b/article/details/82316623