文本内容查找公式「正则表达式」的基本概念

更新于:2022-04-02 09:53,编辑:myweb

概要:「正则表达式」是专用于在一段文本内容中「查找」关键字的公式,与数学公式类似,比常见的「通配符」强大一万倍。如果大家使用过或了解过「通配符」,那学习「正则表达式」也不是一件难事!

视频讲解

https://www.bilibili.com/video/BV1Z34y147W6

正则表达式的作用

在文本「内容」中查找「关键字」,和我们使用最多的 Ctrl+F 类似。

关于「内容」的定义

也就是我们日常理解的「记事本文件中的内容」,「内容」不能是图片或视频。另外,常见的 txt 文件格式的记事本只是记事本文件的一种,还有很多记事本文件,只是扩展名不一样而已。

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

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

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

什么是文本?

以下内容都是文本:

  • 肉眼看得见的文字或标点符号
  • 肉眼看不见的空白,包含空格、换行符、Tab 键等

举例:

文本「abcde」与文本「a   bc   d   e」是两个不同的文本,千万不要认为中间的空格肉眼看不到,就认为计算机会忽略处理,计算机中的所有处理逻辑就是数学计算逻辑,任何的条件特征都会成为影响结果的重要因素。

什么是位置?

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

举例:

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

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

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

举例:

现有内容「地球是圆的」:

1、当我们查找的文本是「圆」字时,其实也相当于同时查找了:圆字左侧的位置+圆字本身+圆字右侧的位置

2、当我们查找的位置是「地」字右侧的位置时,相当于我们将鼠标的光标放到了文本「地」和文本「球」的中间位置

查找的方向

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

查找的方式

查找固定的文本

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

示例:今年是 2022 年,明年是 2023 年。

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

查找动态有规律的文本

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

示例:今年是 2022 年,明年是 2023 年。

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

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

示例:现在是8点50,我在19:30有个会议。

第一步、列出我们想要查找到的内容:

8点50、19:30

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

可以看到我们要查找到的内容的规律是:一位或两位数字后面跟一个汉字「点」或跟一个英文冒号「:」,然后是两位数字。

第三步、写出公式:

  • 如果懂正则的基本语法,则我们很快就可以写出公式为:\d{1,2}[点:]\d{2}
  • 如果不懂正则的基本语法,则我们可以使用「我的ABC软件工具箱」中的「正则表达式可视化生成器」来自动生成,具体操作教程看这里:https://www.wodeabc.com/article/show/8002295

常见问题

我理解此文的概念,但我不知道正则表达式的具体语法,怎么办?

只要您完全理解了本文的所有概念,从此以后根本不用学习正则表达式的具体语法,您完全可以只使用「我的ABC软件工具箱」中的「正则表达式可视化生成器」来自动生成。

具体教程看这里:https://www.wodeabc.com/article/show/8002295

为什么不使用 glob 通配符?

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

为什么查找不成功?

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

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

微软的 .NET 正则表达式引擎