当前位置: 首页 > news >正文

文本操作基础知识:正则表达式

目录

摘要:

一、语法

二、匹配模式pattern

1、普通字符[  ]

2、限定字符

3、定位字符

4、运算字符(  )

三、修饰符flags

四、各语言的正则使用

1、Python的re

参考资料:


摘要:

常用匹配:[A-C]、[^A-C]、\w、\d、\n、\r、\t、*、+、?、{n,m}。

python的re.findall函数

一、语法

/pattern/flags

        pattern:表示匹配模式,需要匹配的具体内容。

        flags:表示修饰符。

二、匹配模式pattern

1、普通字符[  ]

        匹配多个字符条件要用[],单个字符无需使用中括号括起来。例:/A/g和/[AB]/g。二者的区别在于前者只匹配单个字符A,而后者匹配单个字符A或B。

符合解释
[ABC]匹配单个字符
[A-C]匹配A-C单个字符
[^ABC]匹配除了ABC外的单个字符
\S匹配非空字符,不包括回车换行
\s匹配空字符,包括回车换行
\w匹配字母、、数字、下划线等同于 [A-Za-z0-9_]
\d匹配单个数字等同于[0-9]
\t匹配一个制表符
\v匹配一个垂直制表符

2、限定字符

普通字符只能匹配单个,限定字符可以匹配多个连起来的,主要用于匹配字符串。

符号解释
.匹配除了换行符外的单个字符等同于[^\n\r]
*匹配子表达式子零次或多次,例:O*
+匹配子表达式一次或多次,例:O+
?匹配子表达式零次或一次,例:O?
\转义字符,用于匹配特殊字符。
|表示或
{n}

匹配固定n个字符,例:O{2}匹配food。

{n,}至少匹配n次。
{n,m}至少匹配n次,至多匹配m次。

3、定位字符

^匹配字符段落的开头,$匹配段落的结尾。

符号

解释

^

匹配字符串开头

$

匹配字符串结尾

\b

匹配单词边界

\B

匹配非单词边界

案例:匹配字符串开头

        字符段开头会有一个非可见的字符,匹配的是这个,^he则是匹配he开头的字符段(这种状态要加上多行模式。

4、运算字符(  )

 了解即可,以下做个简单的介绍.。

字符解释
(?=pattern)匹配 pattern 但不获取匹配结果(不包括匹配模式字符)。
(?:pattern)匹配 pattern 但获取匹配结果(包括匹配模式字符)
(?!pattern)匹配不在pattern内的字符(不包括匹配模式字符)。
(?<=pattern)与(?=pattern)类似,只不过(?=pattern)只能放在查询字符串末尾,(?<=pattern)只能放在查询字符串开头。
(?<!pattern)与(?!pattern)类似,只不过(?!pattern)只能放在查询字符串末尾,(?<!pattern)只能放在查询字符串开头。

测试:?: 和 ?=

前者进行了结果获取。

 后者只是匹配,并没有获取结果。

三、修饰符flags

常用的修饰符为//i和//g,可以混合搭配使用。

案例:全局忽略大小写匹配ABC字符串

/ABC/gi

四、各语言的正则使用

1、Python的re

要引入re库:import re

import re

        Python的re库,无需按照正则表达式的语法,也就是两个双斜杠,修饰符模块由于python自定,这里举例常用的两个函数一个是全局搜索re.findall和全局替换re.sub。

python正则修饰符模块

 re模块中flags的常用属性:
标志位,用于控制正则表达式的匹配方式。
- re.I:忽略大小写
- re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
- re.M:多行模式
- re.S:即为 . ,并且包括换行符在内的任意字符(.不包括换行符)
- re.U:表示特殊字符集 \w, \W, \b, \B, \s, \S, \d, \D 依赖于 Unicode 字符属性数据库
- re.X:为了增加可读性,忽略空格和 # 后面的注释

案例:re.findall全局搜索返回list

findall:查找整个字符串,返回一个list
 - 语法:re.findall(pattern, string, flags=0)
 - 解释:pattern:表示模式字符串,由要匹配的正则表达式转换而来。
        string:表示要匹配的字符串。
        flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写

import re
str="Sunlan love apple lSunlan" 
c=re.findall("[A-Z]",str,re.I)
print(c)

案例:re.sub全局替换返回

sub:查找字符串中所有匹配的数据进行替换
 - 语法:re.sub(pattern, repl, string[,count=0][,flags=0])
 - 解释:pattern:表示模式字符串,由要匹配的正则表达式转换而来。
        repl:表示替换的字符串。
        string:表示要匹配的字符串。
        count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配值。
        flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

import re
str="Sunlan love apple lSunlan" 
str=re.sub(" lSunlan","s",str)
print(str)

参考资料:

正则表达式 – 简介 | 菜鸟教程

正则表达式在线测试 | 菜鸟工具

相关文章:

  • AndroidStuidio 指定APK 文件的输出路径和文件名格式
  • 【YOLOv8】
  • Java-数据结构-(HashMap HashSet)
  • 深入探索ArkUI @Builder与@BuilderParam的进阶应用
  • React 低代码项目:网络请求与问卷基础实现
  • 《DeepSeek-V3:人工智能大语言模型》
  • Windows 环境下 Prometheus 安装指南
  • python爬虫系列课程1:初识爬虫
  • 【基础架构篇五】《DeepSeek计算图解析:动静态图融合设计原理》
  • 五档历史Level2行情数据:期货市场的信息宝库
  • spconv 安装测试
  • VScode运行C语言提示“#Include错误,无法打开源文件stdio.h”
  • [实现Rpc] 消息抽象层的具体实现
  • 火锅店点餐系统的设计与实现(ssm论文源码调试讲解)
  • 百度api填写
  • 算法12--栈
  • 在Nodejs中使用kafka(四)消息批量发送,事务
  • 栈回溯基础
  • python学opencv|读取图像(七十四)人脸识别:EigenFaces算法
  • 一周学会Flask3 Python Web开发-request请求对象与url传参
  • 《歌手2025》公布首发阵容,第一期就要淘汰一人
  • “女硕士失踪13年生两孩”案进入审查起诉阶段,哥哥:妹妹精神状态好转
  • 上海杨浦:鼓励龙头企业与高校共建创新联合体,最高支持200万元
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 第19届威尼斯建筑双年展开幕,中国案例呈现“容·智慧”
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人