Python中正则表达式常用函数sub,search,findall,split等使用

版权声明:本文为博主原创文章,未经博主女朋友允许不得转载。 https://blog.csdn.net/qq_26442553/article/details/82758540

1.原生字符串r

python中字符串前面加上 r 表示原生字符串,不会转义。与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

# 导入re模块
import re

vrgs = "c:\\a\\b\\c"
print(vrgs) #c:\a\b\c  python中使用print打印,会自动将\转义。

ret = re.match("c:\\\\",vrgs).group()
print(ret) #c:\,其实结果是ret=c:\\

ret = re.match(r"c:\\a",vrgs).group() #使用r不转义匹配
print(ret)  #c:\a

2.re.search 匹配函数的使用

        re.search()扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None。可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式的结果

函数语法:re.search(pattern, string, flags=0) ;pattern是正则,string字符串,flags是修饰符

# 导入re模块
import re

ret = re.search(r"\d+", "您是第:18434 浏览334343者") #只匹配一个第一个结果即返回
print(ret.group())  #18434

ret = re.search("[A-Za-z0-9]{2,8}","中国a2Z方防守打法")
print(ret.group())  #a2Z

3.findall匹配函数使用

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。

语法格式为:findall(string[, pos[, endpos]])

# 导入re模块
import re

ret = re.findall(r"[A-Za-z]", "中国人aDFD23哈哈, 这是13BB34呵呵,啦啦啦zdfasd嘎嘎")
print(ret)
'''
['a', 'D', 'F', 'D', 'B', 'B', 'z', 'd', 'f', 'a', 's', 'd']
'''

4.sub函数的使用:将匹配到的数据进行替换

语法格式:re.sub(pattern, repl, string, count=0),返回值是修改后的结果字符串
  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为一个函数。
  • string : 要被查找替换的原始字符串。
# 导入re模块
import re

ret = re.sub(r"\d+", '999999', "您是第:143434 位浏览者")
print(ret) #您是第:999999 位浏览者

ret = re.sub(r"bb","AA","哈哈bb是的,嘎嘎bb的,呵呵呵bb",2) #替换2次
print(ret)  #哈哈AA是的,嘎嘎AA的,呵呵呵bb

=============sub的替换掉参数是一个函数============================================
def sumNum(temp):
    strNum = temp.group()
    sumNum = int(strNum)+100
    return str(sumNum)

ret = re.sub(r"\d+", sumNum, "A=100,B=200,C=300")
print(ret) #A=200,B=300,C=400

5.split函数使用

split 方法按照能够匹配的子串将字符串分割后返回列表

它的使用形式如下:re.split(pattern, string[, maxsplit=0, flags=0]),分隔次数maxsplit=1 分隔一次,默认为 0,不限制次数。

import re
ret = re.split(r":| ","姓名:张三 33 国籍:中国")
print(ret)  #['姓名', '张三', '33', '国籍:中国']

 

猜你喜欢

转载自blog.csdn.net/qq_26442553/article/details/82758540