身为程序猿,怎能不懂RegExp?

正则表达式是程序猿的好朋友。这体现在两个方面:一、在我们敲的代码里面,可以用正则表达式非常轻巧、灵便、快捷的完成字符串的操作,比如匹配、搜索、提取子串等。二、我们日常的编辑工作、文件操作等办公操作中,使用正则表达式能够让我们事半功倍!

第一个方面我们就不举例子了,几乎所有的编程语言中都内置了正则表达式的处理函数库/类库,不同的语言中,正则表达式的语法和使用方法也是大同小异的。

我们举两个日常办公和编码用到的例子。

第一个例子:在我们经常使用的编辑器上,如何删除所有代码行最后多余的空白字符(包括空格,Tab)?

比如上图中的第13-15行,行尾存在 Tab 和 空格,怎么将这些空格字符一把删除?有些编辑器提供了“去除行尾空格”的菜单,但是很多编辑器没有。没这个菜单的,那么就要动用正则表达式了。打开Visual Studio Code的 Replace 对话框,如下:

输入的 \s+$ ,就能够匹配到所有的行尾空格序列;将 Replace With ... 设置为空,然后选择 Replace All 按钮,那么所有的行尾空格序列就会被一次性的删除。

第二个例子:项目要求所有的文件名必须用字母和下划线,怎么把那些不合规的文件找出来?

把 git 仓库 clone 到本地,然后进入到 repo 的根目录,在bash下执行如下的命令:

~/repo$ find . -not -iregex '^.*/[0-9a-z._]+' -regextype egrep

./deadlock/build/meson-logs

./deadlock/build/meson-logs/meson-log.txt

./deadlock/build/lockc@exe

这里调用了 find 命令,命令行里面的 '^.*/[0-9a-z._]+' 就表示匹配所有符合规范的文件名,参数 -not 则表示不匹配的才打印出来,这样就达成了我们的目的。

正则表达式在Linux 系统中无处不在!不会正则表达式,在Linux中就寸步难行。有人说Linux 是专门为程序员设计的操作系统,确实如此,很多在 Linux 上可以轻松完成的功能,在Windows 上就难以做到,不过社区有人开发了 Cygwin 等这样的系统,可以让我们在 Windows 上也可以轻松使用 GNU 的诸多工具。

有一些在线的正则表达式工具,可以帮助我们快速写出正确的Regexp,这里我隆重推荐 https://regexr.com 。

在这个工具上,可以 WYSIWYG (所见即所得)的编写正则表达式,同时提供了在线帮助。正则表达式并不难,兄弟们,快来学习学习掌握这门程序猿必知必会的工具吧!

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LeoXu的博客

Flex笔记_验证用户输入

1142
来自专栏java一日一条

2015年Java开发岗位面试题归类

3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。

1001
来自专栏Kirito的技术分享

JAVA 拾遗--Future 模式与 Promise 模式

写这篇文章的动机,是缘起于微信闲聊群的一场讨论,粗略整理下,主要涉及了以下几个具体的问题: 同步,异步,阻塞,非阻塞的关联及区别。 JAVA 中有 callb...

3K10
来自专栏java达人

硬编码,常量,枚举类

假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写: if(state==1){//1代表未操作 //...

3716
来自专栏NetCore

.NET 4特性聚焦:代码契约

去年,我们已经开始在讨论Spec#,这是一个基于C#的支持通过契约来进行设计的语言。以契约来设计是构建于诸如静态类型化这样的概念之上的,特定的动作只有在编译时被...

2655
来自专栏java一日一条

架构设计基础知识整理

From http://msdn.microsoft.com/en-us/library/ff647859.aspx

782
来自专栏小樱的经验随笔

堆和栈的区别

一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量...

3629
来自专栏影子

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

63316
来自专栏用户2442861的专栏

2014 360校园招聘技术类面试题

851
来自专栏大内老A

WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]

在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy、WS-Transfer和WSDL,因为WCF元数据结构体系完全是...

1808

扫码关注云+社区

领取腾讯云代金券