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

4.7正则表达式

1.字符匹配

一般字符匹配自身
匹配任意字符(换行符\n除外),一个点占一位
\转义字符,使其后一个字符改变原来的意思(\.就是.)
[......]字符集,对应的位置可以是字符集中的任意字符.字符集中的字符可以逐个列出,也可以给出范围如[abc]或[a-c] [^abc] 表示取反,即非abc

2.预定字符集匹配

\d数字:[0-9]a\dca1c
\D非数字[\D]a\Dcabc
\s匹配任何空白字符:[空格\t\r\n\f\v]a\sca c
\S非空白字符:[\S]a\Scabc
\w匹配包括下划线在内的任何字符:[A-Za-z0-9_]a\wcabc
\W匹配非字母字符,即匹配特殊字符a\Wca c

3.字符串数据词匹配

*匹配前一个字符0次或者多次
+匹配前一个字符1次或者无限次
?匹配一个字符0次或1次
{}{m匹配前一个字符m次,{m,n匹配前一个字符m至n次,若省略n次,则匹配m至无限次}

4.字符串边界匹配

^匹配字符串开头,在多行模式中匹配每一行的开头
$匹配字符串末尾,在多行模式中匹配每一行的末尾

5.在python中使用 

        5.1match方法的使用

        

# re是python内置的模块
import re

# 使用 re.compile()函数将正则表达式模式 r'\d+' 编译成一个
pattern = re.compile(r'\d+')

# 以下对 pattern.match() 方法参数的说明
# 参数2 开始位置 指定从字符串的哪个索引位置开始进行匹配
# 参数3 结束位置 指定匹配操作的结束索引位置
# 结束位置是不包含的,即匹配操作会在该索引之前结束
# 匹配一次然后结束,即只要找到第一个匹配就停止匹配
# 匹配一次就结束,即找到第一个匹配就停止匹配
m1 = pattern.match('one12345678',3,7)

# 调用m1对象的group方法返回匹配到的字符串
print(m1.group())

        5.2 search方法的使用

import re

pattern = re.compile(r'\d+')

m1 = pattern.search('one123456789two')
print(m1.group())

# 也是一次匹配

        5.3findall方法的使用

       

import re

pattern = re.compile(r'\d+')

result = pattern.findall('hello 123 world 456')

print(result)

# pattern.findall() 是 Pattern 对象的一个方法,用于在指定的字符串中查找所有匹配正则表达式模式的子字符串。
# 'hello 123 world 456' 是要搜索的字符串。
# findall() 方法返回一个列表,列表中的每个元素都是一个匹配到的子字符串。如果没有找到匹配项,返回一个空列表。

6.split函数的使用

import re

# 定义一个字符串

str1 = 'a,b,c,d,e'

# 使用字符串的split方法分割

print(str.split(','))


str2 = 'a,b;;c     d'

# 编译一个正则表达式

patterm = re.compile(r'[\s,;]+')

# 使用编译好的正则表达式模式对字符串 str2进行分割
print(pattern.split(str2))

6.sub方法的使用

import re

string = '<h1 class="test1">Hello World</h1>'

# 编译一个正则表达式 匹配单个数字

pattern = re.compile(r'\d')

# 使用sub方法将字符串匹配到的数字 换成2
print(pattern.sub('2',string))

# 使用第三个参数  是更换几次
print(pattern.sub('2',string,1))

# 编译一个正则表达式模式,用于匹配特定格式的 HTML 标签,并将 class 属性的值命名为 classname
pattern = re.compile(r'(.\d)\sclass=(?P<classname>.*>?)".*?</(\\)')
# 使用search方法
print(pattern.search(string).gorup())

# 定义一个函数 fun,用于处理替换操作
def fun(m):
    """
    该函数用于处理正则表达式替换操作。
    :param m: 匹配对象,包含匹配到的信息
    :return: 替换后的字符串
    """
    # 从匹配对象中获取 classname 组的内容,并拼接字符串
    return 'after sub' +m.group('classname')


# 使用 sub 方法将字符串 string 中匹配到的内容替换为 fun 函数处理后的结果,并打印结果
print(pattern.sub(fun,string))

相关文章:

  • el-select组件与el-tree组件结合实现下拉选择树型结构框
  • 深度学习实战电力设备缺陷检测
  • leetcode 416. 分割等和子集 中等
  • 科技快讯 | DeepSeek 公布模型新学习方式;Meta发布开源大模型Llama 4;谷歌推出 Android Auto 14.0 正式版
  • IntelliJ IDEA下开发FPGA
  • 【go】类型断言
  • 学习海康VisionMaster之直线查找组合
  • ResNet改进(22):提升特征选择能力的卷积神经网络SKNet
  • 深入解析 MySQL 底层架构:从存储引擎到查询优化
  • 时序数据库 TDengine × Excel:一份数据,两种效率
  • 借助 AI 工具使用 Python 实现北京市店铺分布地理信息可视化教程
  • Spark,IDEA编写Maven项目
  • 硬盘分区格式之GPT(GUID Partition Table)笔记250406
  • (复看)CExercise_06_1指针和数组_2 给定一个double数组,求平均值,并且返回
  • 第二章:访问远程服务_《凤凰架构:构建可靠的大型分布式系统》
  • React 多个 HOC 嵌套太深,会带来哪些隐患?
  • mac命令操作
  • 在huggingface上制作小demo
  • 初阶C++笔记第一篇:C++基础语法
  • ​‌Qt的稳定版本与下载
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%
  • 从《缶翁的世界》看吴昌硕等湖州籍书画家对海派的影响
  • 蔡建忠已任昆山市副市长、市公安局局长
  • 浙江演艺集团7部作品组团来沪,今夏开启首届上海演出季
  • 金融月评|尽早增强政策力度、调整施策点
  • 中期选举后第三势力成“莎拉弹劾案”关键,菲律宾权斗更趋复杂激烈