Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【自然语言处理】NLP入门(七):1、正则表达式与Python中的实现(7):常用正则表达式、re模块:findall、match、search、split、sub、compile

【自然语言处理】NLP入门(七):1、正则表达式与Python中的实现(7):常用正则表达式、re模块:findall、match、search、split、sub、compile

作者头像
Qomolangma
发布于 2024-07-30 04:37:00
发布于 2024-07-30 04:37:00
18900
代码可运行
举报
运行总次数:0
代码可运行

一、前言

  本文将介绍常用正则表达式、re模块常用方法:findall、match、search、split、sub、compile等

二、正则表达式与Python中的实现

1、字符串构造

2、字符串截取

【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

3、字符串格式化输出

【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)

4、字符转义符

【自然语言处理】NLP入门(三):1、正则表达式与Python中的实现(3):字符转义符

5、字符串常用函数

  在Python中有很多内置函数可以对字符串进行操作。如len()ord()chr()max()min()bin()oct()hex()等。

【自然语言处理】NLP入门(四):1、正则表达式与Python中的实现(4):字符串常用函数

6、字符串常用方法

由于字符串属于不可变序列类型,常用方法中涉及到返回字符串的都是新字符串,原有字符串对象不变

【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解

【自然语言处理】NLP入门(六):1、正则表达式与Python中的实现(6):字符串常用方法:find()、rfind()、index()、rindex()、count()、replace()

7、正则表达式

  正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。

  • Python中,re模块提供了正则表达式操作所需要的功能。
  • 元字符是一些在正则表达式中有特殊用途、不代表它本身字符意义的一组字符。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/^1[34578][0-9]$/
1. 常用正则表达式

  至于各种元字符及其使用规则,详见后文~

  1. 用户名
  2. 只允许使用字母、数字和下划线:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^[a-zA-Z0-9_]+$
  1. 密码
  2. 至少包含一个大写字母、一个小写字母和一个数字,长度至少为8个字符:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
  1. 十六进制值
  2. 匹配有效的十六进制颜色值(6个十六进制字符):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^#([A-Fa-f0-9]{6})$
  1. 电子邮箱
  2. 匹配常见的电子邮箱格式:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  1. URL
  2. 匹配常见的URL格式,包括http、https和www:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^(https?://)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(/.*)?$
  1. IP地址
  2. 匹配IPv4地址:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}$
  1. HTML标签
  2. 匹配HTML标签(包括可选的属性):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^<([a-zA-Z][a-zA-Z0-9]*)\s*([^>]*)>*<\/\1>$
  1. 删除代码注释
  2. 删除/* */形式的代码注释:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/
  1. Unicode编码中的汉字范围
  2. 匹配Unicode编码中的中文字符范围:\u4E00-\u9FFF
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[\u4E00-\u9FFF]
2. 常用正则表达式元字符
  1. . 匹配任意单个字符,除了换行符
  2. ^ 匹配字符串开头
  3. $ 匹配字符串结尾
  4. * 匹配前一个字符0次或多次
  5. + 匹配前一个字符1次或多次
  6. ? 匹配前一个字符0次或1次
  7. [] 匹配括号内的任一字符
  8. () 分组
  9. \d 匹配数字
  10. \w 匹配字母数字或下划线
  11. \s 匹配空白字符

具体使用方法详见后文:【自然语言处理】NLP入门(八):1、正则表达式与Python中的实现(8):正则表达式元字符详解

3. re模块
re.findall()

re.findall(pattern, string, flags=0)方法用于在字符串中查找所有与正则表达式pattern匹配的子串,并以列表形式返回。如果没有找到匹配项,则返回空列表。

  • 格式:
    • re.findall (pattern , string , flags)
  • 说明:
    • pattern: 模式字符串
    • string:要匹配的字符串
    • flags:可选参数,比如re.I 不区分大小写
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

# 匹配所有数字
print(re.findall(r'\d+', 'a1b2c3d4')) # ['1', '2', '3', '4']

# 匹配所有单词 
print(re.findall(r'\w+', 'He is a good man.')) # ['He', 'is', 'a', 'good', 'man']

# 使用分组
matches = re.findall(r'(\w+)\s*=\s*(\d+)', 'x=8 y=9 z=10')
print(matches) # [('x', '8'), ('y', '9'), ('z', '10')]
re.match()
  • re.match(pattern, string, flags=0)
    • 尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配对象,否则返回None。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = r'ab' 
string = 'abcdef' 

match_obj = re.match(pattern, string)
print("Match found:", match_obj.group())
re.search()
  • re.search(pattern, string, flags=0)
    • 扫描整个字符串,寻找匹配模式的第一个位置,返回一个匹配对象。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = r'def'
string = 'abcdef'

search_obj = re.search(pattern, string)
print("Search found:", search_obj.group())
re.split()
  • re.split(pattern, string, maxsplit=0, flags=0)
    • 利用正则表达式对字符串进行分割,返回一个列表。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = r'\s' # 以空白字符为分隔符
string = 'This is a sentence.'

split_list = re.split(pattern, string)
print(split_list)
re.sub()
  • re.sub(pattern, repl, string, count=0, flags=0)
    • 在字符串中替换所有匹配正则表达式的子串。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = r'dog'
replacement = 'cat'
string = 'My dog is brown.'

new_string = re.sub(pattern, replacement, string)
print(new_string)
re.compile()
  • re.compile(pattern, flags=0)
    • 将正则表达式的模式预编译为一个模式对象,可被多次使用。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = re.compile(r'ab+c')
string = 'abbc'

match_obj = pattern.match(string)
print(match_obj.group())
合体示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

# re.match 从头开始匹配
print(re.match(r'\d+', '18abc'))  # <re.Match object; span=(0, 2), match='18'>
print(re.match(r'\d+', 'a18bc'))  # None

# re.search 扫描整个字符串查找匹配
print(re.search(r'\d+', 'a18bc')) # <re.Match object; span=(1, 3), match='18'>  

# re.split 根据模式分割字符串
print(re.split(r'\d+', 'a1b2c3d')) # ['a', 'b', 'c', 'd']

# re.sub 替换匹配的子串 
print(re.sub(r'\d+', 'X', 'a1b2c3d')) # aXbXcXd

# 预编译模式对象
pattern = re.compile(r'\d+')
print(pattern.match('18abc'))  # <re.Match object; span=(0, 2), match='18'>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 学习之正则表达式
相信你此刻已经感受到了它的强大之处,接下来就让我们开始正则表达式的学习。先来介绍一下 re 模块。
用户4872888
2019/03/17
6720
Python_正则表达式
re.compile():用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 两个函数使用,一般建议使用这种编译方式
py3study
2020/01/19
5910
Python_正则表达式
Python正则表达式re模块简明笔记
简介 正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式 ‘hello’ 可以匹配字符串 ‘hello’。 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如 Linux 中的 awk, sed, grep,或者编程语言 Perl, Python, Java 等等。 正则表达式有多种不同的风格,下表列出了适用于 Python 或 Perl
IT架构圈
2018/06/01
5480
【Python】 "爬虫"出发前的装备之一正则表达式
如在一篇文章中查找出所有合法的电子邮箱地址,则可以先用正则表达式定义一个电子邮箱规则,然后再使用这个规则在整个字符串中查找。
一枚大果壳
2022/08/23
9370
【Python】教你彻底了解Python中的正则表达式
正则表达式(Regular Expression,简称regex)是一种强大的字符串匹配和操作工具,用于搜索、匹配和替换字符串。在Python中,re模块提供了正则表达式的支持。本文将深入探讨Python中的正则表达式,涵盖正则表达式的基本概念、常用正则表达式模式、Python中正则表达式的使用方法、常见操作与应用场景,以及一些实际应用示例。
E绵绵
2025/05/25
1650
正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。
AngelNH
2020/04/16
4260
Python正则表达式入门到精通
正则表达式(Regular Expression)是一种用于模式匹配和文本处理的强大工具。在 Python 中,正则表达式通过 re 模块提供支持。本文将详细介绍 Python 中如何使用正则表达式,包括基础语法、常用函数、进阶用法及实际应用示例,帮助深入理解和高效使用正则表达式。
sergiojune
2024/06/25
4020
Python正则表达式入门到精通
python——正则表达式(re模块)详解
在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re。
全栈程序员站长
2022/08/29
7870
python re 正则表达式学习总结
# -*- coding: utf-8 -*- import re import os #------------------------------------- re(正则表达式)模块 -------------------------------- #----------------------------------------------------------------------------------------------------- #-----------------------
py3study
2020/01/13
1.1K0
python模块之re(正则表达式)
匹配模式 re.ASCII 同re.A,对应的内联标识为(?a),用于向后兼容。使元字符\w, \W, \b, \B, \d, \D, \s和\S仅匹配ASCII字符。该模式只在string模式下有意
枇杷李子橙橘柚
2019/05/26
1.3K0
python中的正则表达式(re模块)
正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
测试开发社区
2019/09/20
8520
python学习--正则表达式
正则表达式是一种用来匹配字符串的强有力的工具它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
py3study
2020/01/13
7170
Python正则表达式
前文介绍了正则表达式的定义和使用方法,今天我们就正式讲解Python中是如何使用正则表达式的,最后,通过一个简单的正则表达式运用,爬取网络中的网页数据。
罗罗攀
2021/01/29
4190
Python正则表达式
python正则表达式
笔记: 一:简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 主要介绍Python中常用的正则表达式处理函数 提高工作效率,完成内置函数无法完成的任务! 搜索常用正则表达式!----->提高工作效率! 有意识的多食用正则表达式! 作用是快速检索文本,实现一些替换文本的操作。 检测一串数字是不是电话号码,字符串是不是email,字符串的替换。 二:re.findall函数 在字符串中匹配正则表达式,返回形
py3study
2020/01/19
1.4K0
Python re正则表达式学习
一、re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。
py3study
2020/01/09
7440
常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)
Python的re模块(正则表达式)提供各种正则表达式的匹配操作。在绝大多数情况下能够有效地实现对复杂字符串的分析并取出相关信息。在讲解如何实际应用正则表达式之前,先教大家学习并掌握正则表达式的基本语法(匹配规则)。
Python研究者
2021/09/09
1.9K0
常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)
Python 正则表达式 re 模块
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
为为为什么
2022/08/06
5320
python中的正则表达式
则表达式, 是一门独立的搜索和匹配字符串的语言,只不过在各种编程语言中得到了实现,其中perl语言的正则表达式堪称是范本,很多其他编程语言都参考perl的正则语法来实现。python中的正则表达式通过内置模块re来实现,与perl的正则表达式操作类似,如果你熟悉perl语言的话,对于python的正则也可以轻松上手。
生信修炼手册
2020/05/07
1.1K0
Python面试题之Python正则表达式re模块
正则表达式,是一门相对通用的语言。简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的;此套规则,就是所谓的正则表达式。各个语言都有各自正则表达式的内置模块,包括Linux系统中sed、awk也都是使用正则表达式。当然Python中也有对正则表达式的支持,对应的就是Python内置的re模块。
Jetpropelledsnake21
2019/02/15
1.8K0
003:Python正则表达式讲解及习题练习
正则表达式就是描述字符串排列的一套规则。通常被用来检索、替换那些符合某个模式(规则)的文本。 为什么要学习正则表达式呢,因为我们在爬取数据的时候需要根据我们想要获取的内容来进行爬取,而正则表达式就具有这个基本功能。 在python中,一般我们会使用re模块来实现Python正则表达式的功能。
李玺
2021/11/22
8160
003:Python正则表达式讲解及习题练习
相关推荐
Python 学习之正则表达式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验