Hi,大家好,本章节开始将会从零开始和大家用图文的方式,让你从零基础学会正则表达式!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!

本文将要说到的正则表达式?可能初学的你,一脸疑问?究竟何为正则,正则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学语言的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言(delphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、Javascript、Ruby以及Python)都支持利用正则表达式进行字符串操作。说的简单明了一点,正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

文本处理是我们在日常工作中一项常见的工作任务,比如:在一段文本或数据中,查找、替换、提取、验证、分离和删除等特定字符或字符串。这个工作内容在几乎所有文本编辑器中(如word/excel/VBE等)都提供了字符串的查找/替换功能;在编程语言的世界里则更是提供了更为丰富的字符处理函数和方法。众所周知在VBA中有Find(查找某字符串)、Replace(用一字符串去替换文本中的另一字符串)、LIke(判断某字符串是否存在)、Split(拆分字符串)等等。

不过这些普通的函数或方法也存在很大缺陷:它们通常都是对非常具体的字面文字进行操作,假如要处理某一类具有某些相似特征的字符或字符串,就显得力不从心了。举个简单的例子,要求在一大段文本中,查找所有的符合规范的电话号码。如果用VBA本身提供的字符处理函数来处理,显然不是一件非常容易处理的事情。由此可见,在实际的工作中对稍微复杂一点的文本的处理,如果仅仅只靠编程语言本身是不够的。因此,一种功能更为强大的文本处理解决方案----正则表达式方案,他就出现在我们的眼帘啦!

正则表达式是强大、便捷、高效的文本处理工具。利用它使用者可以描述和分析任何复杂的文本,配合编程语言或文本编辑器提供的支持,正则表达式能够查找、替换、提取、验证、添加、删除、分离和修整各种类型的文本和数据。当今主流编程语言几乎都提供了对正则表达式的支持;有些文本编辑器(如Dreamweaver)在编辑查找框中也可直接输入正则表达式,实现不限于字面文字的搜索与替换.VBA虽然只是对正则提供简单支持,但是它也可以完成一些用VBA函数或方法难以处理的文本处理任务。正则表达式,可以总结为一句话,她是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

那么我们使用正则表达式它可以完成哪些方面的工作?其实他主要的工作效能是给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)和通过正则表达式,从字符串中获取我们想要的特定部分。

现在和大家谈谈正则表达式如何处理文本的简单思路,如下:

1、在处理文本操作的时候,通常是在目标文本中找出特定的字符串,而要查找它们必须得描述出该字符串的特征。比如,你要验证自己输入的是否是一个正确的电话号码,肯定不可能去把所有存在的电话都找出来,因而首先得依据电话号码规范,建立一个电话号码的数据模型,然后比照该模型到需要查找的文本中去查找和验证值,进一步判断目标文本中是否存在与模式一致的字符串。

2、如何将编制好的正则表达式应用于编程语言,实现我们真正的需要,这是学习和使用正则的第二个问题,在这一点上,不同的编程语言其实现方式是不一样的.庆幸的是,较之编制正则表达式,掌握它们是非常简单的事。我们会在接下来的时间会慢慢详细论述。

现在举一个简单的例子,验证手机号码(包含虚拟号码和新号码段),那么使用的正则表达式为:

"^1([38][0-9]|4[5-9]|5[0-3,5-9]|66|7[0-8]|9[89])[0-9]{8}$",正则表达式其实是由一些”特殊字符”组成的。常常把这些组成正则表达式的”特殊字符”称之为元字符。元字符是正则表达式事先规定或约定的,用来表示字符、位置、数量和控制的专用符号。在组成正则表达式的元素中,有的是由两个或多个特殊字符组成一个单元,表示单一意义。

你是否有一种似曾相识的感觉?其实我们经常在日常工作中使用*号代表任意多个字符,用?号代表一个任意字符,那时称之为“通配符”;当下的VBA中Like函数的参数里有更多的特殊字符或结构,用来描述字符或字符串模式.不过,正则表达式里,那些”特殊字符”更多,语法规则更丰富,可以认为,它相当于是一门”微型”语言.如下所示为我们常用的正则表达式所要用的特殊字符,有需要的小伙伴可以记一下啦!

下面列举了VBA中正则表示字符的所有元字符(序列),在以后的章节中会详细介绍.

(1)  常用不可打印字符:\n、\t、\f、\r、\v

(2)  八进制转义:\num    (num是一个八进制数)

(3)  十六进制转义:\xnum (num是一个十六进制数)

(4)  Unicode转义:\unum  (num是unicode代码点)

(5)  控制字符:\cchar       (char是A-Z之间的任意字母)

(6)  普通字符组:[a-z]和[^a-z]

(7)  几乎能匹配任何字符的元字符:英文句点

(8)  字符组缩略表示法:\w、\d、\s、\W、\D、\S

相信您如果看到这里的话,已经初步对正则表达式表达式有一个简单的了解了。那么我们是如何将他们应用于VBA中呢?下面用正则在VBA中来完成一个简单的任务:

需要处理的文本:”正则表达式其实很简单     “

需要完成的任务:删除目标文本中行尾空格.

删除目标文本中行尾空格?您应该马上就会看上面的图片吧!聪明的你,肯定会发现我们可以使用”\s”,这个可表示空格,+表示出现一个或多个字符,因此我们可使用”\s+”表示连续多个空格.$表示一行的行尾,于是可用以下正则表达式描述行尾的若干空格:“\s+$”(^\s*|\s*$),既然我们得到了这个正则表达式,那么现在就可以使用VBA来完成这个工作啦!

Sub Test01()Dim regx, S$, Strnew$S = "正则表达式其实很简单     "‘创建一个正则对象regxSet regx = CreateObject("vbscript.regexp")‘设置正则对象regx的pattern属性,即把正则表达式以字符串形式赋值给pattern.regx.Pattern = "\s+$"‘应用对象提供的方法,实现相应功能.例子中,利用regx对象的Replace方法实现替换.Strnew = regx.Replace(S, "")End Sub

经过这个简单的例子,相信你已经了解了用正则处理文本的基本过程和思路,以及如何在VBA中使用正则的代码框架.以后的任务是全面掌握正则的所有元字符和它们的工作原理,另外还需要进一步了解正则对象的各种属性和方法. 在处理"大字符串"时,即使可用VBA函数或方法处理,但不如用正则处理速度快.比如:用Split将用逗号连接的10万个数字字符串转化的为数组,如果用正则处理,只需要一半的时间.

正则表达式的特点是:

1. 灵活性、逻辑性和功能性非常强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!

我是Excel教案,关注我持续分享更多的Excel技巧!

如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

正则表达式查找字符串_如何简单理解正则表达式?只需1分钟就可以看到她优美的舞姿...相关推荐

  1. c语言正则表达式查找字符串长度,c语言实现正则表达式匹配

    正则表达式教程网站 https://www.jb51.net/tools/zhengze.html#introduction C语言处理正则表达式的函数 regcomp().regexec().reg ...

  2. red hat安装宝塔_只需几分钟即可安装Red Hat Container Development Kit(视频)

    red hat安装宝塔 自从我开始使用各种形式的OpenShift(例如带盒的Online,然后又作为容器化的图像)玩耍以来,没有什么比Red Hat Container Development Ki ...

  3. php srelen 字符串_比较详细Python正则表达式操作指南

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

  4. java正则表达式所有字符串_“JAVA”正则表达式如何匹配所有符合要求的子字符串?...

    慕容708150 一.正则表达式基础知识1.1 句点符号    在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以"t"字母开头,以"n"字母结束.另 ...

  5. python正则表达式匹配字符串中的电话号码_Python正则表达式匹配字符串中的数字...

    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 代码: ...

  6. flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

    摘要: 一杯茶的功夫部署完成机器学习模型! 在生产环境中部署机器学习模型是数据工程中经常被忽视的领域.网上的大多数教程/博客都侧重于构建.训练和调整机器学习模型.如果它不能用于实际的预测,那么它又有什 ...

  7. npoi操作word书签_100份Word文档合并只需3分钟?不用复制粘贴,简单到一学就会...

    办公中,我们时常会需要将很多份Word文档合并在一起,如果不会便捷的技巧光靠复制粘贴,那将会花费我们很多的时间和精力.所以,今天我们就是要教大家一个非常简单的方法,只用三分钟就能将上百份文档合并在一起 ...

  8. 搜苹果ipad版_快速实现苹果企业签名,几分钟就可以?

    作为目前最受开发者们欢迎的苹果企业签名,为ios应用的内测分发带来很多便利.通过企业证书签名成功后的企业签名ios应用就可以直接分发给用户,绕过App Store的审核.ios用户在信任证书之后可以实 ...

  9. 苹果6访问限制密码4位_破解6位密码只需4秒!3步设置密码挡住黑客

    你的密码安全至关重要 首先要知道的是,破解密码有两种方法,第一种是暴力破解,也就是挨个密码去尝试,直到试对为止.暴力破解的很明显问题是,密码越长,破解密码的时间就会成倍增加,一旦密码超过了某个长度,基 ...

最新文章

  1. 前端三十五:图片的基本概念
  2. MySQL基础总结(二)
  3. 28. LAST() 函数
  4. css选择器按功能分,CSS 选择器
  5. vue属性绑定加载图片不成功
  6. c++将十进制存放在2个字节及多个字符中
  7. 打印流(处理流)——PrintStream,PrintWriter
  8. python常用库大全文库_Python库参考手册
  9. 深度装机大师一键重装_电脑店U盘重装系统教程
  10. 中国图形图象学报和计算机科学,《中国图象图形学报》编辑部
  11. 杭州电子科技大学计算机学院复试细则,2020杭州电子科技大学计算机学院考研复试公告...
  12. 如何以应届生的身份进入阿里巴巴?
  13. 程序员的精确思维,左手数学右手编程
  14. Android面试真题《思考及解答》10月刊
  15. java-net-php-python-jsp网上拍卖系统计算机毕业设计程序
  16. k8s资源限制——资源的配额管理(Resource Quotas)
  17. 购买了虚拟主机还要云服务器,购买了虚拟主机还要云服务器
  18. JSON sever 学习
  19. Vitalik:单个 Slot 实现最终确认的路径
  20. Swift 优雅的网络请求Moya

热门文章

  1. 软件工程的 第二天贪吃蛇
  2. 如何才能成为一个高效工作的软件工程师?
  3. Mongo数据库慢查询功能
  4. Redis常见客户端异常汇总
  5. 利用 Zabbix 监控数据库文件大小
  6. 如何通过ngnix将网站访问改为https
  7. 力扣题目——118. 杨辉三角
  8. 惠普服务器新加硬盘找不到,HP服务器更换硬盘后如何查看是否成功同步状态?...
  9. oracle影响性能,影响Oracle性能的几个重要参数
  10. java什么会引用传递_在java中为什么很多人说有值传递和引用传递?引用传递的本质...