python正则表达式之re模块方法

以下内容为从慕课网听来的,记下笔记,以便以后查用。

1.search(pattern, string, flags=0) 在一个字符串中查找匹配(查找第一次出现的位置)

2.findall(pattern, string, flags=0) 找到匹配,返回所有匹配部分的列表

3. sub(pattern, repl, string, count=0, flags=0) 将字符串中匹配正则表达式的部分替换为其他值

4.split(pattern, string, maxsplit=0, flags=0) 根据匹配分割字符串,返回分割字符串组成的列表

1. 查找第一个出现的位置,类似于string 的 find方法,不过后者是查找固定子串

str1 = 'imooc videonum = 1000'

str1.find('1000') # 固定子串

info = re.search(r'\d+', str1) # 正则方法,可以查找任意数字

info.group() # '1000'

2.findall 方法讲解

str2 = 'C++=100, java=90, python=80'

info = re.search(r'\d+', str2)

info.group() # 100 ,只返回一个匹配值,而我们想查找所有时长,就要用到findall()了

info = re.findall(r'\d+', str2)

info.group() # ['100', '90', '80'],求和很容易了

3.pattern为正则表达式,repl可为字符串,可为函数返回的字符串,string被替换字符串,count是对替换的限制,flags为re模块的标志

eg:

str3 = 'imooc videonum = 1000'

info = re.sub(r'\d+', '1001', str3)

info: 'imooc videonum = 1000'

思考:如果最后的数字变了,最后数字加1如何处理?

方法:repl定义为一个函数,匹配到的对象传入repl定义的函数中

def add1(match):

    val = match.group()

    num = int(val) + 1

    return str(num)

info = re.sub(r'\d+', add1, str3)

info: 'imooc videonum = 1001'

解释:先将正则表达式去匹配string,然后把匹配到的match 对象作为参数传入add1

4. split比字符串分割更灵活

str4 = 'imooc:C C++ Java Python' # 将4个种类分割开

re.split(r':| ', str4) # 比字符串方便

str4 = 'imooc:C C++ Java, Python'

re.split(r':| |,', str4)

 

你可能感兴趣的:(python)