正则中常见的4种匹配模式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【2月更文挑战第12天】

所谓匹配模式,指的是正则中一些改变元字符匹配行为的方式,比如匹配时不区分英文字母大小写。常见的匹配模式有 4 种,分别是不区分大小写模式、点号通配模式、多行模式和注释模式。


1、不区分大小写模式(Case-Insensitive)

当我们把模式修饰符放在整个正则前面时,就表示整个正则表达式都是不区分大小写的。模式修饰符是通过 (? 模式标识) 的方式来表示的。  我们只需要把模式修饰符放在对应的正则前,就可以使用指定的模式了。在不区分大小写模式中,由于不分大小写的英文是 Case-Insensitive,那么对应的模式标识就是 I 的小写字母 i,所以不区分大小写的 cat 就可以写成  (?i)cat。


如果用正则匹配,实现部分区分大小写,另一部分不区分大小写,这该如何操作呢?就比如说我现在想要,the cat 中的 the 不区分大小写,cat 区分大小写。也就是 ((?i)the) cat。

  • 不区分大小写模式的指定方式,使用模式修饰符 (?i);
  • 修饰符如果在括号内,作用范围是这个括号内的正则,而不是整个正则;
  • 使用编程语言时可以使用预定义好的常量来指定匹配模式。


2、点号通配模式(Dot All)

正则中提供了一种模式,让英文的点(.)可以匹配上包括换行的任何字符。这个模式就是点号通配模式,有很多地方把它称作单行匹配模式。

单行的英文表示是 Single Line,单行模式对应的修饰符是 (?s)。


3、多行匹配模式(Multiline)

通常情况下,^匹配整个字符串的开头,$ 匹配整个字符串的结尾。多行匹配模式改变的就是 ^ 和 $ 的匹配行为。


多行模式的作用在于,使  ^ 和 $ 能匹配上每行的开头或结尾,我们可以使用模式修饰符号 (?m) 来指定这个模式。


这个模式有什么用呢?在处理日志时,如果日志以时间开头,有一些日志打印了堆栈信息,占用了多行,我们就可以使用多行匹配模式,在日志中匹配到以时间开头的每一行日志。


4、注释模式(Comment)

很多语言也支持在正则中添加注释,让正则更容易阅读和维护,这就是正则的注释模式。正则中注释模式是使用 (?#comment) 来表示。


比如我们可以把单词重复出现一次的正则 (\w+) \1 写成下面这样,这样的话,就算不是很懂正则的人也可以通过注释看懂正则的意思。

(\w+)(?#word) \1(?#word repeat again)


  • 不区分大小写模式,它可以让整个正则或正则中某一部分进行不区分大小写的匹配。
  • 点号通配模式也叫单行匹配,改变的是点号的匹配行为,让其可以匹配任何字符,包括换行。
  • 多行匹配说的是 ^ 和 $ 的匹配行为,让其可以匹配上每行的开头或结尾。
  • 注释模式则可以在正则中添加注释,让正则变得更容易阅读和维护。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
自然语言处理 JavaScript 前端开发
正则表达式完整指南(上)
正则表达式完整指南(上)
223 0
|
物联网 网络性能优化 API
MQTT常见问题之单个消息发送数据不能超过64k如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
Python
【python】通过多线程解决tkinter gui中按键卡住的问题
【python】通过多线程解决tkinter gui中按键卡住的问题
379 0
|
11月前
|
算法 安全 数据安全/隐私保护
TLS 1.3 相比 TLS 1.2 在性能上有哪些具体的提升?
【10月更文挑战第4天】TLS 1.3 相比 TLS 1.2 在性能上有哪些具体的提升
|
6月前
|
存储 编解码 UED
拥抱AVIF:提升网站加载速度的最佳实践,附Zola模板
AVIF(AV1图像文件格式)是一种高效、开源且免版税的图片格式,相比JPG和PNG,在视觉相似的压缩水平下,文件大小可减少50%。它支持有损与无损压缩、动画存储、Alpha通道、HDR及宽色域等特性。2024年起,现代浏览器已全面支持AVIF。通过使用HTML `<picture>`标签,可优先加载AVIF图片,同时兼容WebP格式,提升网站性能与用户体验。本文还分享了在Zola静态网站生成器中实现AVIF支持的方法,大幅降低图片文件体积,优化带宽与流量成本,实现技术升级与用户需求的双赢。
175 0
|
8月前
|
人工智能 数据可视化 数据处理
2025低代码前瞻:平台赋能的无限可能
在数字化转型加速的背景下,低代码平台正成为企业不可或缺的工具。展望2025年,低代码技术将通过可视化开发、核心引擎升级、模型驱动、增强数据处理、AI融合、丰富插件生态、开放架构及强化企业功能,全面提升开发效率与灵活性。本文深入解析这些趋势,展示低代码如何赋能企业,实现更高效、智能的应用构建与管理。
|
10月前
|
安全 区块链 数据安全/隐私保护
深入探索区块链技术在金融领域的应用与挑战
本文旨在探讨区块链技术在现代金融领域中的应用前景,分析其带来的机遇与面临的挑战。通过对当前区块链技术的基本原理及其在金融行业的具体应用场景进行深入剖析,本文揭示了区块链技术如何推动金融服务的创新和效率提升。同时,文章也对技术实施过程中可能遇到的法律、安全和隐私等问题进行了探讨,并提出了相应的解决策略。通过综合评估区块链技术的优势与局限,本文为金融行业的从业者和研究者提供了宝贵的参考和指导。
|
11月前
|
前端开发 Java 数据库
企业级JAVA、数据库等编程规范之命名风格 —— 超详细准确无误
文章详细阐述了企业级编程中Java和数据库等编程规范的命名风格,包括包名、类名、方法名、参数名、成员变量、局部变量、常量、抽象类、异常类、测试类、数据库及其字段和CSS等的命名规则。
237 0
企业级JAVA、数据库等编程规范之命名风格 —— 超详细准确无误
|
存储 NoSQL 关系型数据库
非关系型数据库的优点有很多
非关系型数据库的优点有很多
515 8
使用@PathVariable注解却不起作用问题解决方案
使用@PathVariable注解却不起作用问题解决方案
使用@PathVariable注解却不起作用问题解决方案

热门文章

最新文章