Python re模块 | Python正则 函数介绍 flags修饰符全解析

2024-01-22 05:36

本文主要是介绍Python re模块 | Python正则 函数介绍 flags修饰符全解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1 re基本形式
  • 2 函数介绍
    • 2.1 re.compile
    • 2.2 re.match
    • 2.3 re.search
    • 2.4 re.findall
    • 2.5 re.finditer
    • 2.6. re.sub
    • 2.7 re.split
  • 3 flags修饰符

re 模块是 Python 标准库中的正则表达式模块,用于对字符串进行正则表达式匹配和操作。正则表达式是一种强大的文本模式匹配工具,允许你通过一种灵活的方式搜索、匹配和替换字符串。以下是 re 模块的一些主要功能和常用函数:

1 re基本形式

re.func(pattern,string,flags=0)

参数说明

pattern:模式,正则匹配规则,匹配规则可以看这篇博客

string: 要匹配的字符串

flags:修饰符

2 函数介绍

以下的r’xxx’ r开头的单引号扩住的是正则表达式

2.1 re.compile

re.compile(pattern, flags=0)

编译正则表达式模式,返回一个正则表达式对象。这个对象可以用于执行下面的各种正则操作。

import re
pattern = re.compile(r'\b\w+\b')  # 匹配单词

2.2 re.match

re.match(pattern, string, flags=0)

尝试从字符串的开头匹配正则表达式模式。如果匹配成功,返回第一个匹配对象;否则返回 None

match = re.match(r'hello', 'hello world')

或者可以通过现成的pattern.match(string)

2.3 re.search

re.search(pattern, string, flags=0)

在字符串中搜索正则表达式模式,返回一个匹配到的匹配对象。如果没有匹配到,返回 None

search_result = re.search(r'\d+', 'The price is $42')

这里注意re.match和re.search的区别

  • re.match只匹配字符串的开始。如果字符串开始不符合正则表达式,则匹配失败,函数返回None。
  • re.search匹配整个字符串,直到找到一个匹配。

如下面的例子

import reprint(re.match('abc', 'abcf'))  # 输出 <re.Match object; span=(0, 3), match='abc'>
print(re.match('abc', 'fabc'))  # 输出 Noneprint(re.search('abc', 'abcf'))  # 输出 <re.Match object; span=(0, 3), match='abc'>
print(re.search('abc', 'fabc'))  # 输出 <re.Match object; span=(1, 4), match='abc'>

2.4 re.findall

re.findall是Python的re模块中的一个函数,它可以找到字符串中所有匹配正则表达式的部分,并返回一个包含这些匹配结果的列表。

例如,考虑下面的字符串和正则表达式:

import retext = "apple banana apple banana apple"# 找到所有的"apple"print(re.findall('apple', text)) # 输出 ['apple', 'apple', 'apple']

在这个例子中,re.findall('apple', text)找到了字符串中所有的"apple",并返回了一个包含这些"apple"的列表。

2.5 re.finditer

re.finditer() 是 Python 中 re 模块提供的一个函数,用于在字符串中查找所有匹配正则表达式的非重叠子字符串。不同于 re.findall() 返回匹配的字符串列表,re.finditer() 返回一个迭代器,该迭代器产生每个匹配对象的 match 对象。迭代器可以用于for循环等,迭代具体知识,可以查看我的这篇博客Python | 超详细的可迭代对象(原理and代码)_python 可迭代对象-CSDN博客

以下是 re.finditer() 的基本用法:

import repattern = re.compile(r'\d+')text = 'There are 123 apples and 456 oranges.'matches = pattern.finditer(text)for match in matches:print(f"Match found: {match.group()} at position {match.start()}-{match.end()}")

在这个例子中,re.finditer() 查找字符串中的所有数字,输出它们的位置和值。

要注意的是,re.finditer() 返回的是一个迭代器

可以使用 for 循环来遍历所有的匹配。每次迭代都会得到一个匹配对象,

可以使用 group() 方法来获取匹配的字符串,使用 start()end() 方法获取匹配的起始和结束位置。

2.6. re.sub

re.sub(pattern, replacement, string, count=0, flags=0)

re.sub() 是 Python 中 re 模块提供的函数之一,用于在字符串中替换正则表达式匹配的文本。

举例如下

import retext = "The price of the product is $20. The discount is 10%."# 将价格替换为'XX'
result = re.sub(r'\$\d+', 'XX', text)print(result)
# 输出The price of the product is XX. The discount is 10%.

2.7 re.split

re.split(pattern, string, maxsplit=0, flags=0)

使用正则表达式模式拆分字符串,并返回拆分后的子字符串列表。

import retext = "Hello World, how are you today?"# 使用空格分割字符串
words = re.split(r'\s', text)print(words)
# 输出['Hello', 'World,', 'how', 'are', 'you', 'today?']

在这个例子中,re.split() 根据正则表达式模式 \s(匹配任意空白字符)分割字符串,得到一个包含单词的列表。输出结果为:

输出[‘Hello’, ‘World,’, ‘how’, ‘are’, ‘you’, ‘today?’]

还有比如

3 flags修饰符

再介绍flags修饰符,这些修饰符可以用来修改正则表达式的匹配行为。以下是一些常用的修饰符:

  1. re.IGNORECASE (或 re.I):

    • 不区分大小写

    • 示例:匹配所有形式的"hello",不区分大小写。不加的话只会匹配"hello"

      import repattern = re.compile(r'hello', re.IGNORECASE)
      result = pattern.match('Hello, World!')
      print(result.group())  # 输出: Hello
      
  2. re.MULTILINE (或 re.M):

    • 正常情况下,只从开头匹配,加上之后会进行多行模式,每一行开头都匹配一次

    • 示例:匹配每一行的开头

      import retext = """
      apple
      banana
      cherry"""# 默认情况下,^只匹配字符串的开始
      print(re.findall('^banana', text))  # 输出 []# 如果设置了re.MULTILINE,^也会匹配每一行的开始
      print(re.findall('^banana', text, re.MULTILINE))  # 输出 ['banana']
      
  3. re.DOTALL (或 re.S):

    • re.DOTALL是Python正则表达式的一个标志,它改变了.(点)的行为。在默认情况下,.匹配除了换行符(\n)之外的任何字符。但是如果设置了re.DOTALL.也会匹配换行符。

    • 示例:匹配包含换行符的多行文本。

      import retext = "apple\nbanana"# 默认情况下,.不匹配换行符
      print(re.findall('apple.banana', text))  # 输出 []# 如果设置了re.DOTALL,.也会匹配换行符
      print(re.findall('apple.banana', text, re.DOTALL))  # 输出 ['apple\nbanana']
      
  4. re.VERBOSE (或 re.X):

    • 允许你编写更易读的正则表达式。当设置了re.VERBOSE后,你可以在正则表达式中添加空格和注释,这些空格和注释不会影响正则表达式的匹配行为。

    • 示例:使用空格和注释的可读正则表达式。 正则表达式内加了注释不影响匹配

      import repattern = re.compile(r'''\d+   # 匹配数字[a-z]+  # 匹配小写字母''', re.VERBOSE)
      result = pattern.match('123abc')
      print(result.group())  # 输出: 123abc
      
  5. re.ASCII (或 re.A):

    • 匹配只包含ASCII字符的单词

    • 示例:如!就不会被匹配

      import repattern = re.compile(r'\w+', re.ASCII)
      result = pattern.match('Hello123!')
      print(result.group())  # 输出: Hello123
      

这些示例演示了如何使用不同的标志来修改正则表达式的匹配行为。

这篇关于Python re模块 | Python正则 函数介绍 flags修饰符全解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631994

相关文章

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文