查看原文
其他

Word里面的通配符:基础知识

韩林涛 简言 2022-07-09

通配符是一种可以在Word里提高文本处理效率的法宝。今天这篇帖子将会详细讲讲“通配符”的基础知识。


我们先来看这样一个问题:请在Word中将下面这段文字的所有英文删掉。



要想解决这个问题的话,就要用到“通配符”,因为我们要用一段“通用”的代码来“匹配”相应的“字符”。不过“通配符”的全称并非前面这半句,它是英文“Wildcard”一词的缩写。


“Wildcard”是我最喜欢的英文单词之一,因为它的意思很有趣。在计算机领域,我们将其翻译成“通配符”;在体育领域,它的译名是“外卡”;在英语口语中,它有“不可预知的人或事”的意思;在棋牌游戏中,它又叫“万能牌”,比如在著名的“UNO”游戏中,就有一类牌叫“Wildcard”,牌友们还会戏称其为“野牌”。


我没有查到“Wildcard”最初是怎么引入到计算机领域的,但如今在这个圈子里基本上已经路人皆知了。每当谈起“通配符”,人们首先想到的是这么几个符号:


“*”、“?”、“[]”、“{}”、“@”、“\”、“()”、“<>”、“!”等等。


接下来我将逐个介绍每一个符号的作用,希望这部分的介绍能够让大家充分的了解这些符号的叫法和用法。


1、*


在中文中我们称这个符号为“星号”,在英文中可称为:asterisk或star。我们平时在印刷品中看到这个符号时,常用这个符号来表示注释,或者是省略的内容。


我去查了一下词源,“aster”可看作是“a star”,也就是一颗星星。这个词的拉丁语词根就是小星星的意思。


知道了词根,估计你就能记住这个符号的英文说法了。


在通配符中,“*”用来代表零个或多个字符。


2、?


与“*”经常一起讲解的是“?”,这个符号的英文大家应该都知道:question mark。在通配符中,问号的作用是代表任意一个字符。请务必注意“*”和“?”的区别!


3、[]


在中文中我们称这个为方括号,在英文中叫:square brackets。在通配符中,它的作用是表示范围,比如:[0-9]就是表示0到9中的任意一个数字,可以是0,可以是1,可以是2.....可以是9,但只能是任意一个数字,不是0到9这全部10个数字。


4、{}


在中文中我们称这个符号为花括号或大括号,在英文中叫:curly brackets,直译的话就是:弯曲的括号。(我们头上如果长得是卷发,那么就叫:curly hair)


在英文中这个符号还可以叫:brace。不过,如果你“胆敢”去瞅一眼维基百科,会发现......


来源:

https://en.wikipedia.org/wiki/Bracket


总之就是,这个符号在英文中有超级多的称呼方法。


在通配符中,这个符号的作用是“计数器”,比如:


哈{2}


这个符号的目的是寻找文章中的:哈哈


也就是说,我希望寻找“哈”这个字连着出现两次的地方。


那如果你想找,哈哈哈、哈哈哈哈、哈哈哈哈哈哈哈哈哈,你应该怎么写呢?


应该这样写:


哈{2,}


在花括号里的2后面加个半角的逗号即可,意为:我要找的字符里,“哈”要至少出现两次。


那如果是:


哈{2,4}


这种又是什么呢?这个通配符组合意为:最少两个“哈”连续出现,最多四个“哈”连续出现。


5、@


这个符号大家都知道吧,英文叫:at。


在通配符中,这个符号也是个“计数器”,计算的是它的前一个字符出现一次或多次的情况。


6、\


中文里我们管这个符号叫“反斜杠”,英文叫“back slash”。与之相对的是“斜杠”或“正斜杠”:/,英文叫“forward slash”。


这里需要特别指出的是,百度百科里“斜杠”这个词条中将正斜杠和反斜杠的英文标错了:



我们平时在浏览器的地址栏中输入的都是正斜杠(/),如:


http://translation.education/


而在电脑自带的文档浏览器地址栏中看到的地址,用的都是反斜杠(\),如:


D:\OneDrive\图片\PlainTalks


分清楚正斜杠和反斜杠后,我们再说一些在通配符中反斜杠的作用是什么。


这个符号可以成为“转义符”(Escape Character)。要理解什么是“转义”,必须得先搞清楚通配符的作用。


以“?”为例,这个符号在正常的文本中可以用来表示疑问,但是到了通配符中就用来表示任意一个字符。


这就会导致,如果我们希望在使用通配符时去专门寻找表示疑问的问号,那么我们一旦直接输入了“?”就会让计算机以为我们想找任意一个字符。


此时,转义符就起作用了:


\?


把转义符(反斜杠)加在“?”前面,就相当于告诉计算器:我不希望“?”以通配符的身份出现,我要把它的“义”“转”掉,我就想找表示疑问的那个普普通通的字符“?”。


在英文中这个符号叫“Escape Character”,看起来跟“转义符”没什么关系,所以我们经常会搞不清楚“转义符”究竟是啥。


7、()


这个符号大家都熟悉吧,中文叫圆括号,英文叫:round brackets或者parenthesis。它的英文名不如方括号那么多,维基百科上就列了几个:


 parens, first brackets, or circle brackets


为了理解“parenthesis”的意思,我去查了词根:


from παρά (parábeside) + ἐν (enin) + τίθημι (títhēmiput, place),


所以可以理解成这个词的意思是:把......放在......的旁边。再说得直白一点就是:


加塞、插队


如果你去查牛津词典,会发现这个词的意思有:插入成分、圆括号、插曲、间歇的意思。现在就好了解了吧。


但是,在通配符中,“()”不是用来插队的,而是用来当作“隔离墙”的。我们在后文中用实际例子给大家演示。


8、<>


在中文中我们看到这个符号时,第一个冒出来的想法可能是“尖括号”,在英文中它的称法挺有意思,维基百科有个比较全的:


guillemets, inequality signs, pointy brackets, or brackets. Sometimes referred to as angle brackets, in such cases as HTML markup. Occasionally known as broken brackets or "brokets".


来源:

https://en.wikipedia.org/wiki/Bracket


如果不作为括号用,单独叫的话,左边这个可以叫:小于号(less-than sign),右边那个可以叫:大于号(larger-than sign)


单纯说这两个符号的作用有点难,给大家举个例子:


I went to Beijing to visit Peking University and Beijing Language and Culture University. But I lost my bag in a big trainstation.


看一下这个句子,大家猜“<B*g>”和“<b*g>”分别能从中匹配出什么结果来?


答案是:


<B*g>能匹配出:Beijing 和 But I lost my bag

<b*g>能匹配出:bag 和 big


你会发现,“<”的作用是标识一个单词或字符串的开始字符,“>”用于标识一个单词或字符串的结束字符。


但是在中文中,要想用这个来匹配类似的字符串就要注意了,比如:


北京大学和北京语言大学的共同点是:第一个字都是北,最后一个字都是学。


如果按照上面的说法,应该匹配出“北京大学”、“北京语言大学”、“北,最后一个字都是学”,但实际上,只能匹配出:


北京大学和北京语言大学的共同点是:第一个字都是北,最后一个字都是学


没错,除了句号没匹配到,其他都匹配到了。


因此,在学习通配符时一定要区分好同一个通配符在中文和英文中的不同。


9、!


认!不!认!识!这!个!叹!号!


在英文中,这个符号叫:Exclamation mark。我记得我第一次遇到这个英文表达的时候特别疑惑,甚至发音都发不准,直到我学了另一个单词“clamour”,这个单词的意思就是大吵大闹的意思。


后来查了exclamation的词根,这个词源自拉丁语,词根是“ex”(out)和“clamare”(I cry out)。


维基百科上还把叹号这个符号本身的来历描述了一下,说这个词是从“io”这个表示开心的拉丁语演变过来的,也说这个词是漫画中给枪声配的惊叹状拟声符号演变过来的。


总之,这个惊叹号的起源很有意思。


在通配符中,“!”表示“Not”,比如给这个通配符加个叹号:


[0-9]


变成:


[!0-9]


那么就从“匹配0到9中任意一个数字”变成“匹配时不要去匹配0-9中的任意一个数字”。


以上9个符号不是通配符的全部,但如果要深入学习通配符,他们的功能你一定得知道。


接下来我们回到本文最开始的那个问题:




如何删除这篇文章中所有的英文段落?


我们能给出的答案很多,我先选取一个最简单的供大家参考:


[a-zA-Z '.,]{1,}


操作时如下图所示:



之所以说这个是最简单的方法,是因为我们给的问题很简单,中文中没有夹杂英文,而且英文中没有太多的标点符号。


[a-zA-Z '.,]:用于匹配任意小写英文字母(a-z)、任意大写英文字母(A-Z)、空格、单引号、句号、逗号中的任意一个字符。


{1,}:用于表示上面的这些字符至少出现1次。


两个符号连在一起用,然后再点击Word里的“全部替换”就可以了。


大家还能给出其他的通配符表达式吗?欢迎大家在下方留言!


今天这篇帖子只是一个引子,后续大家还会更多例子,而通配符最适合在实际案例中学习。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存