基于pycharm的正则表达式Re库使用教程

基于pycharm的正则表达式Re库使用教程

    • 正则表达式语法
    • Re库的基本使用
    • Match对象
      • Match对象的属性
      • Match对象的方法
    • 正则表达式的常用方法
      • re.search()
      • re.match()
      • re.findall()
      • re.split()
      • re.finditer()
      • re.sub()
      • re.compile()

正则表达式语法

正则表达式在编程语言、数据库等领域都应用广泛,可以自己总结知识点,等忘记了再回来查看,当然也有专门的正则表达式网站。

基于pycharm的正则表达式Re库使用教程_第1张图片

Re库的基本使用

Re库是Python的标准库,不用我们安装,其主要用于字符串匹配。

Re库的调用方式:

import re

正则表达式的表示类型:

raw string类型,即原生字符串类型,和普通字符串不同的是,原生字符串需要在字符串表示前加一个小写的r,其字符串中的\不被解释为转义字符。(建议)

string类型,即字符串类型,如果其没有\可以使用,如果有\其会把\翻译为转义字符,那就需要\,较为繁琐。

Match对象

Match对象的属性

基于pycharm的正则表达式Re库使用教程_第2张图片

Match对象的方法

基于pycharm的正则表达式Re库使用教程_第3张图片

import re

regex = re.compile('[0-9]{6}')
match = regex.search('432700wxm')
if match:
    print(type(match))
    # 待匹配的文本
    print(match.string)
    # 待匹配的正则表达式
    print(match.re)
    # 待匹配文本的起始位置
    print(match.pos)
    # 待匹配文本的结束位置
    print(match.endpos)
    # 匹配的字符串
    print(match.group(0))
    # 匹配的字符串在原字符串中的起始位置
    print(match.start())
    # 匹配的字符串在原字符串中的结束位置
    print(match.end())
    # (起始位置,结束位置)
    print(match.span())

输出结果:


432700wxm
re.compile('[0-9]{6}')
0
9
432700
0
6
(0, 6)

基于pycharm的正则表达式Re库使用教程_第4张图片

正则表达式的常用方法

基于pycharm的正则表达式Re库使用教程_第5张图片
下面我们来一一看各函数的详细用法:

re.search()

基于pycharm的正则表达式Re库使用教程_第6张图片
基于pycharm的正则表达式Re库使用教程_第7张图片

注意,可能此函数能匹配多个字符串,但是只返回第一个匹配的对象,并且是match对象,故也可调用match对象的相关属性和方法。

import re

# 匹配邮政编码
match = re.search(r'[1-9]\d{5}', 'WUST 430070')
# 首先看是否为空 不为空才调用相关函数
if match:
    # match.group()用于在输入序列字符串中查找与所需模式匹配的子序列
    print(match)
    print(match.group(0))


基于pycharm的正则表达式Re库使用教程_第8张图片

re.match()

基于pycharm的正则表达式Re库使用教程_第9张图片
注意其为从一个字符串的开始位置起匹配,所以如果开始位置没有相匹配的结果,其为空,所以在调用时,也是需要先判断是否为空。

基于pycharm的正则表达式Re库使用教程_第10张图片

import re

# 匹配邮政编码
match = re.match(r'[1-9]\d{5}', '430070 WUST')
# 首先看是否为空 不为空才调用相关函数
if match:
    # match.group()用于在输入序列字符串中查找与所需模式匹配的子序列
    print(match)
    print(match.group(0))

基于pycharm的正则表达式Re库使用教程_第11张图片

re.findall()

基于pycharm的正则表达式Re库使用教程_第12张图片
注意其返回的是列表类型,而不是match类型!!

import re

# 匹配邮政编码
match = re.findall(r'[1-9]\d{5}', '430070 WUST 432700')
# 首先看是否为空 不为空才调用相关函数
if match:
    # 由于re.findall()返回的是列表类型 而不是match类型 故注意区分
    print(match)

基于pycharm的正则表达式Re库使用教程_第13张图片

re.split()

基于pycharm的正则表达式Re库使用教程_第14张图片

import re

# 匹配邮政编码
match = re.split(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
    # 由于re.split()返回的是列表类型 而不是match类型 故注意区分
    print(match)

基于pycharm的正则表达式Re库使用教程_第15张图片
如果想要控制最大分割数,可以采用如下方法。

import re

# 匹配邮政编码
match = re.split(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261', maxsplit=2)
# 首先看是否为空 不为空才调用相关函数
if match:
    # 由于re.split()返回的是列表类型 而不是match类型 故注意区分
    print(match)

基于pycharm的正则表达式Re库使用教程_第16张图片

re.finditer()

基于pycharm的正则表达式Re库使用教程_第17张图片

import re

# 匹配邮政编码
match = re.finditer(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
    for i in match:
        print(i.group(0))

基于pycharm的正则表达式Re库使用教程_第18张图片

re.sub()

基于pycharm的正则表达式Re库使用教程_第19张图片

import re

# 匹配邮政编码
match = re.sub(r'[1-9]\d{5}', '123', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
    print(match)

基于pycharm的正则表达式Re库使用教程_第20张图片
如果想要控制最大匹配次数,也可以加上对应参数。

import re

# 匹配邮政编码
match = re.sub(r'[1-9]\d{5}', '123', '430070 WUST 432700 BIT 354261', 2)
# 首先看是否为空 不为空才调用相关函数
if match:
    print(match)

基于pycharm的正则表达式Re库使用教程_第21张图片

re.compile()

注意正则表达式的表示和正则表达式对象不同,我们参数pattern只是正则表达式的表示,而通过re.compile()后的对象regex是正则表达式的对象。
基于pycharm的正则表达式Re库使用教程_第22张图片
所以,我们也可以先将其表示转化为对象,然后调用对象的方法,其方法和上述六个一样使用奥!
基于pycharm的正则表达式Re库使用教程_第23张图片
叮咚,讲完啦!

你可能感兴趣的:(Python,正则表达式,pycharm,前端)