• 2025-02-27 17:25:41

正则表达式的基本概念

我们在进行文件内容查找替换的时候,会碰到多种多种不同的查找场景。一种是「精确」查找替换,比如将「AAA」替换为「BBB」。还一种是「模糊」查找替换,比如文档中有很多不同的邮箱,我需要将这些邮箱统一替换为新的邮箱,那就需要用「正则表达式」来帮我们查找了。「正则表达式」是专用于在一段文本内容中「查找」关键字的公式,与数学公式类似。本文就简单的介绍一下「正则表达式」的基本概念,以更好在鹰迅批量处理工具箱

正则表达式的作用

需要在文档的「内容」中进行查找替换某个「关键字/词」的时候,正则表达式就能发挥重要作用。

关于「内容」的定义

也就是我们 Word、PDF、Excel、Txt 等各种类型文件中的文本信息,因此「内容」不能是图片或视频。

我们需要将一个文本「内容」看成两部分:

1、组成「内容」的所有「文本」。

2、文本与文本之间的边界,也称之为「位置」。

什么是文本?

以下内容都是文本:

肉眼看得见的文字或标点符号以及肉眼看不见的空白,包含空格、换行符、制表符等都是文本。

举例:

比如「abcde」与「a bc d e」这是两段文本,第一段文本中所有的字母都是连在一起的,而第二段文本之间有一个或者多个的空格,这些空格虽然我们人眼无法看见,但是在计算机中每个空格都是一个符号,都会被处理,因此这两段文本是完全不同的

什么是位置?

位置就是单个文本与单个文本的分界线。

举例:

文本「abcde」共有 6 个位置,这 6 个位置是:1a2b3c4d5e6

正则表达式可以查找到什么?

既然「内容」是由「文本」和「位置」组成,因此正则表达式可以查找到的「关键字」可以是:文本、位置、文本和位置的组合。

查找的方向

和我们阅读一段文字的方向一样,正则表达式是「从左往右」进行「关键字」的查找。

查找的方式

查找固定的文本

也就是我们日常说的「精确查找」,即我们输入什么就查找什么,查找到的内容与我们输入的内容完全一样,一字不差。

示例:今年是 2025 年,明年是 2026 年。

当我们查找的文本是「2024」时,可以正确查找到。
当我们查找的文本是「2008」时,不可以查找到。

查找动态有规律的文本

也就是我们日常说的「模糊查找」,即我们输入的只是一个公式,这个公式可以匹配到多个内容。

示例:今年是 2025 年,明年是 2026 年。

当我们查找的公式是「\d+」,可以正确查找到:2022、2023
当我们查找的公式是「8\d+」,不可以查找到,原因是示例内容中没有以数字 8 开头的数字

写一个公式(正则表达式)的完整步骤

示例:今天8点50有个会议,明天19:30还有活动。

第一步、列出我们想要查找到的内容,比如我们要找到上面一句话中的所有时间:

8点50、19:30

第二步、找出它们的规律,并用一句完整的话进行总结:

这一步非常重要,一定要是有规律的并且我们要准确的找到这些规律才能用正则表达式去进行查找,否则有可能出现漏匹配或者误匹配。比如上面的两个时间是不同的格式,但是是有一定规律的,总结出来就是:一位或两位数字后面跟一个汉字「点」或跟一个英文冒号「:」,然后是两位数字。

第三步、写出公式:

如果懂正则的基本语法,则我们很快就可以写出公式为:\d{1,2}[点:]\d{2}

如果不懂正则的基本语法,则我们可以使用「鹰迅批量处理工具箱」中的「正则表达式可视化生成器」来自动生成。

常见问题

我理解此文的概念,但我不知道正则表达式的具体语法,怎么办?
只要您完全理解了本文的所有概念,从此以后根本不用学习正则表达式的具体语法,您完全可以只使用「鹰迅批量处理工具箱」中的「正则表达式可视化生成器」来自动生成。

为什么不使用 glob 通配符?
因为 glob 通配符一般用于查找文件名与路径相关的场景中,而且正则表达式本身就有相应的通配符,想怎么匹配就怎么匹配,强大的不得了。

为什么查找不成功?
检查实际内容中是否有空格、换行符等肉眼看不见的内容,从而导致自己在写正则表达式时忽略掉了

我们使用的是哪个版本的正则表达式引擎?
微软的 .NET 正则表达式引擎

正文到此结束