正则表达式介绍

正则表达式介绍

在接下来的几章中,我们将详细的讲解正则表达式,在正式学习正则表达式的语法之前我们需要明白什么是正则表达式,或者说正则表达式的定义已经正则表达式的用途。

明白一个东西的用途能够最大的激励我们去不断学习


正则表达式的用途

介绍定义钱我们先了解正则表达式的用途,这样能够给予我们一个对正则表达式直观的感受

什么是文本

我们常见的文本类似于下面这种形式

​ Hello, my name is Jack Wang. You can just call me Jack. This is my learning notes, you can learn regular expression with my notes

In the following chapter, you will learn the grammar of the regular expression.

我们所看到文本具有良好的组织格式,例如空格,换行,回车等等

但实际上这些格式对于计算机来说和abcd一样都是字符,只不过当计算机读取到这些格式字符时,会显示指定的格式

例如制表符(Tab键)在计算机中以\t字符表示,当计算机读取到\t时,就会在屏幕上进行缩进,同理,换行符在计算机中以\n表示

所以上面的一段话在在计算机中看来就是

\tHello, my name is Jack Wang, You can just call me Jack, This is my learning notes, you can learn regular expression with my notes\nIn the following chapter, you will learn the grammar of the regular expression.

注意,上面的话实际上是一行,只不过由于不同的屏幕大小会折行

由于计算机中存储的都是数字,所以会根据ASCII表把上面的内容转化成数字,然后存储起来

所以总的来说,一个文件就是一个完整的字符串,其中有表示内容的内容字符,也有表示用于控制格式的格式字符

计算机读取文件并在屏幕上显示内容的时候,会按照格式字符来将内容字符以指定的格式来显示

为什么会有正则表达式

我们现在对文本有了进一步的认识,那么为什么会有正则表达式呢?

想象一下,我们有一个10000词的文章,我们想要找出来如下的内容

  1. 找出单词car,但是不找出包含car的其他单词,例如: scar, carry, scarce
  2. 找出所有的合法的网页连接
  3. 把文章中的size全部替换成item
  4. 检查所有的电子邮件地址是否合法

这些问题都是在编程或者日常工作中经常需要处理的问题.

我们的确可以使用一系列的if语句结合读取文件等操作来实现操作,但是预期这样自己造轮子,不如直接使用高效的正则表达式

或者说使用一些有文本和特殊指令构成的高度简练的字符串来解决

比如下面的语句

\b[Cc][Aa][Rr]\b

所以,正则表达式的作用有如下基本两条:

  1. 查找特定的信息,即搜索
  2. 查找并编辑特定的信息,即替换

所以给定一个正则表达式,要么将会匹配一些文本,要么匹配并替换一些文本

结合前面讲解的文本,我们可以用正则表达式来匹配内容字符(例如car),或者匹配控制字符(例如空白行)


正则表达式的定义

根据前面的介绍,下面给出正则表达式的定义:

正则表表达式是一些用来匹配和处理文本的字符串

正则表达式是用正则表达式语言创建的,正则表达式不是一种程序设计语言,准确的说是内置于各种语言或者程序中的"迷你语言"

即由不同语言实现的通用的规则


准备使用正则表达式

正则表达式的语法并不难,真正的难点在于如何使用正则表达式的语法来匹配我们的目标

而且往往同一个目标具有可以用不同的正则表达式来匹配,使用不同的正则表达式匹配的效率不同,有可能在匹配我们真正需要的目标以外,还会匹配到另外的出乎意料的结果

总的来说和其他任何语言一样,学习正则表达式就是需要练习.

为了能够良好的食用本笔记,所以首先讲解下环境配置

教程环境:Ubuntu 18.04 LTS + Visual Studio Code 1.46.1 + VsCode Vim插件

练习文本:pyenv的说明文本,这里给一个我上传的百度网盘地址提取码:6666:

在这里插入图片描述

首先输入如下命令来设置匹配高亮

:set hlsearch

vim中使用正则表达式语法如下

/正则表达式

例如上面匹配一个单词car,就应该是

/\b[Cc][Aa][Rr]\b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值