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

python中正则相关:正则概述,匹配数字,匹配单词,匹配字符开头与结尾,单词的边界检测

正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),它是一种文本模式,同时也是计算机科学的一个概念,其中包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来才逐渐被广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

import retext = 'The price of the product is $19.9, the quantity is 10.'# 匹配任意字符
# pattern 正则的匹配模式 --> 特殊字符串
# r -> 表示原生字符串,取消字符串中转译含义
any_char = re.findall(r'.', text)
print(any_char)
print('*' * 50)# 匹配数字
num = re.findall(r'\d', text)
print(num)
print('*' * 50)# 匹配所有字母
letters = re.findall(r'[a-zA-Z]', text)
print(letters)
print('*' * 50)# 匹配所有数字和字母
# 方式一:
letterAndNum1 = re.findall(r'[a-zA-Z0-9]', text)
print(f'letterAndNum1:{letterAndNum1}')
# 方式二:
letterAndNum2 = re.findall(r'\w', text)
print(f'letterAndNum2:{letterAndNum2}')# 匹配美元符号
dollars = re.findall(r'\$', text)
print(f'dollars:{dollars}')# 只匹配the字符
the = re.findall(r'the', text)
print(f'the:{the}')# 只匹配the字符不区分大小写
theIgnoreCase = re.findall(r'the', text, re.I)
print(f'theIgnoreCase:{theIgnoreCase}')# 通过竖线通道
the_or_The = re.findall(r'the|The', text)
print(f'the_or_The:{the_or_The}')

执行结果
在这里插入图片描述

量词问题

匹配多个字符、匹配多个数字

# 1.匹配所有数字,这里+的意思是一个或者无限个
pattern = r'\d+'result = re.findall(pattern, text)
print(result)

执行结果
在这里插入图片描述

匹配所有字母

# 2.匹配所有字母,这里+的意思是一个或者无限个
pattern = r'[a-zA-Z]+'result = re.findall(pattern, text)
print(result)

执行结果

# 2.匹配所有字母,这里+的意思是一个或者无限个
pattern = r'[a-zA-Z]+'result = re.findall(pattern, text)
print(result)

在这里插入图片描述

匹配所有的字母和数字

# 3.匹配所有字母和数字
pattern = r'\w+'result = re.findall(pattern, text)
print(result)

在这里插入图片描述

其他匹配规则

# 4.匹配所有0个或多个数字
pattern = r'\d*'result = re.findall(pattern, text)
print(result)# 5.匹配2个或3个数字,用大括号表示
# {n}匹配前面的字符出现n次
# {n,m} 匹配前面的字符出现n到m次
# {,m}匹配前面的字符出现0到m次
# {n,}匹配前面的字符出现n次到无限次
pattern = r'\d{2,3}'result = re.findall(pattern, text)
print(result)
# 6.匹配3次个以上的数字,注意3后面不要有空格
pattern = r'\d{3,}'result = re.findall(pattern, text)
print(result)# 6.匹配字符t开头的单词
text1 ='the'
pattern = r'^t\w+'result = re.findall(pattern, text1)
print(result)# 7.匹配字符t结尾的单词
text2 ='eat'
pattern = r'\w+t$'result = re.findall(pattern, text2)
print(result)# 8.匹配字符t开头且t结尾的单词
text2 ='th666at'
pattern = r'^t\w+t$'result = re.findall(pattern, text2)
print(result)# 8.匹配字符t开头且t结尾的且不含数字的字符串
text2 ='that'
text3 ='th666at'
pattern = r'^t[a-zA-Z]+t$'resultHas = re.findall(pattern, text2)
resultHasNot = re.findall(pattern, text3)
print(resultHas)
print(resultHasNot)# 9.单词的边界检测,检测t开头,t结尾,\b表示单词的边界检测
text = 'the price of that product is $19.9998, taet quantity tsst is 108.'
pattern = r'\bt[a-zA-Z]+t\b'rsult = re.findall(pattern, text)
print(rsult)

执行结果
在这里插入图片描述

http://www.xdnf.cn/news/15484.html

相关文章:

  • MySQL数据实时同步到Elasticsearch的高效解决方案
  • aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
  • Ubuntu服务器安装Miniconda
  • 鸿蒙应用开发: 鸿蒙项目中使用私有 npm 插件的完整流程
  • 华为MateBook D 16 SE版 2024款 12代酷睿版i5集显(MCLF-XX,MCLF-16)原厂OEM预装Win11系统
  • vscode 打开项目时候,有部分外部依赖包找不到定义或者声明,但是能使用cmake正常编译并且运行
  • 【前端】【Iconify图标库】【vben3】createIconifyIcon 实现图标组件的自动封装
  • AWS RDS PostgreSQL可观测性最佳实践
  • Linux操作系统从入门到实战(八)详细讲解编译器gcc/g++编译步骤与动静态库链接
  • S7-1200 中 AT 覆盖参数的应用:灵活访问数据区域的实用指南
  • 银河麒麟KYSEC安全机制详解
  • Java设计模式(java design patterns)
  • 【linux V0.11】boot
  • 【算法深练】BFS:“由近及远”的遍历艺术,广度优先算法题型全解析
  • 掉线监测-tezos rpc不能用,改为残疾网页监测
  • 视频孪生与三维融合:智汇云舟赋能智慧化电力转型的破局之道
  • 【数据结构初阶】--单链表(二)
  • Flask服务器公外网访问,IPv6(亲测有效!!!!)
  • 哈希扩展 --- 海量数据处理
  • 20250714让荣品RD-RK3588开发板在Android13下长按关机
  • 【Linux】Jenkins Lts 配置构建 Maven 项目
  • 机床自动化中的“方言翻译官”:EtherNet/IP 转 PROFIBUS DP 实战手记
  • 3分钟搭建自动签到打卡RPA程序:验证码自动识别
  • 知识蒸馏:模型压缩与知识迁移的核心引擎
  • C++--unordered_set和unordered_map的使用
  • CCF-GESP 等级考试 2025年6月认证Python三级真题解析
  • EVOLVEpro安装使用教程-蛋白质语言模型驱动的快速定向进化
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 45(题目+回答)
  • [Dify]-基础入门8- 使用 Dify 创建文档问答机器人(零代码实现)
  • openeuler使用桥接模式(包括新建虚拟机和已有虚拟机)