0 前期教程
1 前言
在上面的前期教程中,第一次正式接触了正则表达式这个非常厉害的工具,它本质上是一种功能强大的字符串处理工具,在各种平台和编程语言中都有涉及。但是除正则表达式外,还有一种非常常用的字符串处理表达式,即通配符。本篇博客主要是想理清楚这两者之间的关系和区别。
2 正则表达式
2.1 基本内容
由于正则表达式有点琐碎,个人建议是先看一篇相对完整的教程,来建立起一个框架,这里推荐一个简练的教程。
如果觉得这个教程内容不够详细,还可以继续看这个教程。
建立好框架之后,接下来就是不断地去实践,然后一点点积累,遇到不记得的可以去上面的两个教程查,反复操作从而提高自己的熟练度。
2.2 应用场景——VS Code查找替换
这里简单记录一个正则表达式应用的例子——在VS Code中对文本进行查找替换。我们经常会遇到需要对文本文件进行查找替换,但是一般的文本阅读器能够提供的查找替换非常有限,而VS Code是支持使用正则表达式进行查找替换的,功能更加强大,也是一个让自己对正则表达式更加熟练的一个途径。
但是需要注意,在VS Code中引用分组要使用$1
,而不是正则表达式中的标准用法\1
,具体可以看下面这个例子。
一般我们在pdf中复制到的代码有可能格式存在问题,比如多了很多不必要的回车,如果一个一个删速度太慢,就可以将代码先复制到VS Code中,然后利用正则表达式进行查找替换。使用快捷键Ctrl + F
,唤起查找替换的窗口,勾选正则表达式的选项,然后就可以使用正则表达式进行替换了。如下图所示。
上面这个例子是 将所有不在;(){}
符号后面的回车替换为空格 ,这样就能删除代码里面不必要的回车了。
3 通配符
通配符叫做文件名通配符更能突出其作用范围,因为通配符主要用于文件名的通配,可以在shell命令中使用,常用的通配符有以下几个:
*
:星号用来匹配任意长度的任意字符。【在正则表达式中表示重复0次或多次】?
:问号用来匹配任意单个字符。【正则表达式中无特殊含义】[^]
:匹配指定范围之外的任意单个字符。
如[^a-z] = [^[:lower:]]
:匹配小写字母a-z之外的任意单个字符[]
:匹配指定范围内的任意单个字符。
如[A-Za-z]
:匹配大小写字母中的任意单个字符(实验时使用[a-z]
或者[A-Z]
或者[A-Za-z]
的效果等同,都是大小写全匹配,此处值得验证)
[0-9]
:匹配0到9之间的数字
4 Word中的通配符
使用过word的查找替换功能都知道,在查找替换窗口,有一个选项可以勾选,即“使用通配符”,如下图所示。
很多人将这个“通配符”与上面提到的文件名通配符或者正则表达式搞混,但实际上它并不属于上述两者。首先它支持的语法要比文件名通配符多得多,其次,它的语法也和正则表达式有很大出入。此外,word里面的通配符要求具有word环境,即只能在word中使用,而正则表达式不限使用平台和高级语言,语法都是共通的。所以我认为word里面的正则表达式可以概括为 “需要有word软件环境支持的一种字符串处理表达式”。
当然,为了更好地使用word这个软件,它里面支持的通配符还是得要学会,这里推荐两个教程。
和上面一样,建议时时翻阅,多多实践来提高自己的熟练度。