首页 > 其他分享 >正则表达式的概念和实践

正则表达式的概念和实践

时间:2024-01-10 11:46:00浏览次数:33  
标签:返回 字符 匹配 例如 正则表达式 实践 概念 字符串

python中用re模块来处理正则表达式,能帮助你检查一个字符串是否和某种模式匹配。正则表达式提供了强大的方式来查找,替换,验证和提取文本数据

常用的场景是用正则表达式来进行网页数据的爬取和存储。

1、正则表达式的模式:

普通字符 例如字母,数字,空格可以直接匹配
特殊字符

例如点号.,星号*,加号+、问号?等,他们具有特殊的含义和功能

字符类 用方括号[]包围的字符集合,用于匹配方括号内的任意一个字符
元字符

例如\d,\w,\s,用于匹配特定类型字符,例如数字,字母,空符。

量词

例如{n},{n,},{n,m},用于匹配指定的次数或范围

边界符号 例如^,$,\b,\B,用于匹配开头,结尾,或单词边界位置

 

2、特殊字符及含义

字符 描述
\ 将下一个字符转换为一个特殊字符
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
* 匹配前面的子表达式零次或多次。例如po*能匹配"p"和“poo”
+ 匹配前面的子表达式一次或多次。例如po+能匹配“po”和“poo”
? 匹配前面的子表达式零次或一次。例如do(es)能匹配“do”和“does”
{n} n是一个非负整数。匹配确定的n次。例如o{2}能匹配food的两个o,但不能匹配fo的一个o
{n,} n是一个非负整数,匹配n次以上。例如o{2,}能匹配fooood,不能匹配fo
x|y 匹配x或y
[xyz] 字符集合,匹配所包含的任务一个字符。例如[abc],匹配apple的“a”
[^xyz] 负值字符集,匹配未包含的任意字符。例如[^abc],匹配apple的'p','l','e'
[a-z] 字符范围。匹配指定范围内的任意字符。
[^a-z] 字符范围。匹配未指定范围内的任意字符。
\d 匹配一个数字字符。等价于[0-9]
\D 匹配一个非数字字符。等价于[^0-9]
\n 匹配一个换行符。
\r 匹配一个回车符。
\s 匹配任意空白字符,包括空格,制表符,换页符等。
\S 匹配任意非空白字符
\w 匹配字母,数字,下划线。
\W 匹配非字母,数字,下划线。

(?:pattem)

匹配模式但不获取匹配的子字符串。即非获取匹配,是匹配模式。例如“industr(?:y|ies)”,能匹配“industry”或“industries”这种模式
(?=pattem) 正向肯定断言。例如windows(?=7|10|2000|NT),能匹配“windows7”的'windows',但不能匹配“wondows2.2”的‘windows’

3、特殊字符的优先级

优先级 符号
最高 \

()、(?:)、(?=)、[]

*、+、?、{n}、{n,}、{n,m}
^、$
次最低 串连,即相邻字符连接在一起
最低 |

4、正则表达式常用的方法

方法 解析
compile() 编译正则表打死模式,返回一个对象模式
match() 决定正则表达式对象是否在字符串最开始的位置匹配。注意:该方法不是完全匹配。当模式结束时若 原字符串还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符“$”
search() 在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回“None”
findall() 遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表
finditer() 返回一个迭代器,顺序访问每一个匹配结果,该方法将找到匹配正则表达式的所有子串。
split() 按照能够匹配的子串将原字符串分割后返回列表
sub() 替换原字符中每一个匹配的子串后返回替换后的字符串
subn() 返回sub()方法执行后的替换次数
flags() 正则表达式编译时设置的标志
pattem() 正则表达式编译时使用的字符串

标签:返回,字符,匹配,例如,正则表达式,实践,概念,字符串
From: https://www.cnblogs.com/wenxiacui/p/17952066

相关文章

  • Gateway API 实践之(一)FSM Gateway 中的故障注入策略
    在之前的文章中,我们快速体验了FSMGateway-一个开源的K8sGatewayAPI的实现。在即将发布的FSM1.2中,FSMGateway将会带来更多的功能:故障注入策略限流策略会话保持策略负载均衡算法熔断策略访问控制策略健康检查策略TLS上游策略...后面我们会推出系列的文章来介绍这些功......
  • Flink的waterMark概念解释 watermark是flink为了处理event time窗口计算提出的一种机
    Flink的waterMark概念解释watermark是flink为了处理eventtime窗口计算提出的一种机制,本质上就是一个时间戳,代表着比这个时间早的事件已经全部进入到相应的窗口,后续不会在有比这个时间小的事件出现,(触发)基于这个前提我们才有可能将eventtime窗口视为完整并触发窗口的计算。St......
  • 源码开发实践:搭建企业培训APP的技术难题及解决方案
    在企业培训源码开发实践中,各位开发者可能遇到各种各样的问题,本文将深入探讨这些挑战,并提供解决方案,助力你顺利搭建企业培训APP。 1.多平台兼容性企业中员工使用的设备多种多样,包括iOS、Android等不同操作系统。在搭建培训APP时,如何实现多平台兼容性成为一项首要任务。解决方案是采......
  • 测试环境使用问题及其优化对策实践
    一、前言我们经常听到研发人员和测试人员抱怨:“测试环境怎么又不能用了!”、“测试环境现在部署的是master包!”、“测试环境数据又被人改了?”、“测试环境怎么部署的这么慢!”、“测试环境里的公共服务,你用的时候我只能等着?”、“测试环境挂了,我自动化脚本全失败了!”测试环境是是测试......
  • 百度搜索exgraph图执行引擎设计与实践
    作者|搜索Go研发组导读百度搜索exgraph图执行引擎设计重点分成三个部分:图描述语言、图执行引擎、对接扩展。图描述语言是一种基于文本可读的图描述语言,用于描述任务中的算子以及算子之间的依赖关系,即让人可以理解,也可以被计算机理解并执行。图执行引擎是exgraph的核心,负责根据图......
  • 15 万字稳定性提升经验:《2023 下半年最佳实践合集》限量申领!
    一分钟精华速览超30位专家共创,近20篇最佳实践,共计15万字。联合所有编写成员正式发布,限量赠送,即日起申领。(方式见文末)为什么整理行业最佳实践?大量实践证明,分布式系统稳定性的提升,不仅仅需要从技术工具发力,还涉及到组织、制度流程、人员能力等方方面面的问题。而每家企业......
  • 中科驭数诚邀您参加第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛
    低时延技术是证券基金期货领域业务系统的核心技术,是打造极速交易系统领先优势的关键,也是证券基金行业关注的前沿技术热点。继去年圆满举办首届证券基金行业先进计算技术大会之后,在中国计算机学会集成电路设计专委、先进计算产业联盟、证券基金信创联盟WG9工作组的指导下,由中科驭数......
  • 初识JVM​-JVM基础概念
    什么是JVMJVM全称是JavaVirtualMachine,中文译名Java虚拟机。JVM的功能01解释和运行对字节码文件中的指令,实时的解释成机器码,让计算机执行。02内存管理自动为对象、方法等分配内存自动的垃圾回收机制,回收不再使用的对象03即时编译对热点代码进行优化,提升执行效率。Java语言如果不......
  • 语义通信——概念与方法
    通信的三个层面的问题:层面A(技术问题):通讯符号如何准确地加以传输?层面B(语义问题):传输的符号如何精确地传达含义?层面C(效用问题):收到的含义如何以期望的方式有效地影响行为?语义通讯泛指不同的智能体之间进行的以“达意”为目的的通讯.这里的“智能体”可以指人类、智能机......
  • 【动态规划】【字符串】C++算法:正则表达式匹配
    作者推荐视频算法专题涉及知识点动态规划字符串LeetCode10:正则表达式匹配给你一个字符串s和一个字符规律p,请你来实现一个支持‘.’和‘’的正则表达式匹配。‘.’匹配任意单个字符'’匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符......