文本内容查找公式「正则表达式」的基本概念
翻译:简体中文,更新于: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 正则表达式引擎