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


翻译简体中文更新于2023-02-07 15:02主编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 正则表达式引擎

声明:网站中的图文、视频等内容均仅限于制作该内容时所使用的软件版本和操作环境,如后续因产品更新导致您的操作与网站上的内容不一致请以实际为准!

更多文章