正则表达式是程序猿的好朋友。这体现在两个方面:一、在我们敲的代码里面,可以用正则表达式非常轻巧、灵便、快捷的完成字符串的操作,比如匹配、搜索、提取子串等。二、我们日常的编辑工作、文件操作等办公操作中,使用正则表达式能够让我们事半功倍!
第一个方面我们就不举例子了,几乎所有的编程语言中都内置了正则表达式的处理函数库/类库,不同的语言中,正则表达式的语法和使用方法也是大同小异的。
我们举两个日常办公和编码用到的例子。
第一个例子:在我们经常使用的编辑器上,如何删除所有代码行最后多余的空白字符(包括空格,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 (所见即所得)的编写正则表达式,同时提供了在线帮助。正则表达式并不难,兄弟们,快来学习学习掌握这门程序猿必知必会的工具吧!
领取专属 10元无门槛券
私享最新 技术干货