Python|Re正则表达式库函数

Re 库是 Python 的标准库,主要用于字符串匹配
#调用
import re

一、正则表达式的表示类型

  1. raw string 类型「原生字符串类型」
    re 库采用此类型表示正则表达式

    • 表示为:r'text'
      #例如
      r'[1-9]\d{5}'
      r'\d{3}-\d{8}|\d{4}-\d{7}'
      
      raw string 是不包含对转义符再次转义的字符串
      「有转义字符时正则表达式前面加 r,就不用再次转义」
  2. string 类型表达(需要对转义字符再次转义0_0):

    r'[1-9]\\d{5}'
    r'\d{3}-\\d{8}|\\d{4}-\\d{7}'
    

    但是比较复杂,
    所以有转义字符时尽量使用 raw string 类型表示。

    二、Re 库主要功能函数

1、re.search( ) 函数
re.search(pattern, string, flags=0)
#在一个字符串中搜索匹配正则表达式的第一个位置,返回 match 对象
pattern :  #正则表达式的字符串或原生字符串表示 
string :   #待匹配字符串 
flags :    #正则表达式使用时的控制标记


>>> import re
>>> a = "123asd456"
>>> match = re.search(r"(\d*)([a-z]*)(\d*)",a)
>>> if match:
        print(match.groud(0)) #返回整体


123asd456
>>> print(match.groud(1)) 
123
>>> print(match.groud(2))
asd
>>> print(match.groud(3))
456
>>>

正则表达式中的三组括号把匹配结果分成三组
group() 同 group(0) 就是匹配正则表达式整体结果
group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
没有匹配成功的,re.search()返回None

2、re.match( ) 函数
re.match(pattern, string, flags=0)
#从一个字符串的开始位置起匹配正则表达式,返回 match 对象
>>> import re
>>> match = re.match(r'\d{3}','abc123')
>>> if match:
        match.group(0)


>>> match.group(0)
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    match.group(0)
AttributeError: 'NoneType' object has no attribute 'group'
>>> match = re.match(r'\d{3}','123abc')
>>> if match:
        match.group(0)


'123'
>>>
3、re.findall( ) 函数
re.findall(pattern, string, flags=0)
#搜索字符串,以列表类型返回全部能匹配的子串
>>> import re
>>> ls = re.findall(r'\d{3}','123abc456def789ghi')
>>> ls
['123', '456', '789']
>>>
4、re.split( ) 函数
re.split(pattern, string, maxsplit=0, flags=0)
#将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
maxsplit: #大分割数,剩余部分作为后一个元素输出

>>> import re
>>> re.split(r'\d{3}','123abc456def789ghi')
['', 'abc', 'def', 'ghi']
>>> re.split(r'\d{3}','123abc456def789ghi',maxsplit=1)
['', 'abc456def789ghi']
>>> re.split(r'\d{3}','123abc456def789ghi',maxsplit=2)
['', 'abc', 'def789ghi']
>>>
5、re.finditer( ) 函数
re.finditer(pattern,string,flags=0)
#搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是 match 对象
>>> import re
>>> for i in re.finditer(r'\d{3}','123abc456def789ghi'):
        if i:
            print(i.group(0))


123
456
789
6、re.sub( ) 函数
re.sub(pattern, repl, string, count=0, flags=0)
#在一个字符串中替换所有匹配正则表达式的子串 返回替换后的字符串
repl:    #替换匹配字符串的字符串
count :  #匹配的大替换次数

>>> import re
>>> re.sub(r'\d{3}', ' QWE ', '123abc456def789ghi')
' QWE abc QWE def QWE ghi'
>>>
7、re.subn( ) 函数
re.subn(pattern, repl, string, count=0, flags=0)
#返回替换次数
>>> print(re.subn("g.t","have",'I get A,  I got B ,I gut C'))
('I have A,  I have B ,I have C', 3)
>>>
8、compile( ) 函数
re.compile(pattern,flags=0)
#编译正则表达式模式,返回一个对象的模式。

>>> rst=re.search(r'[1‐9]\d{5}', 'BIT 100081') 
#函数式用法:一次性操作

>>> pat=re.compile(r'[1‐9]\d{5}') 
>>> rst=pat.search('BIT 100081')
#面向对象用法:编译后的多次操作

编译成对象,可以提高一点「效率」。

转自公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值