首页 > 技术文章 > 女生找对象与正则表达式(通配符)

kinglearnjava 2015-10-14 17:29 原文

正则表达式是用来进行文本匹配的工具,主要用于编程,一般人都没听过。不过,如果平时经常进行文本处理,也许会接触通配符。

通过简单的几个通配符,我们就能让电脑帮我们找出指定的对象(Object),当然你理解为男女朋友也可以,人们找对象都会对长相、性格、学历、思想等各方面都有要求,巴拉巴拉一大堆。有个笑话说找男友的标准很简单:180m2,180cm,180mm。不懂的人满头雾水,懂的会心一笑。通过后面这三个单位,我们可以明白它分别指什么。

同样的,通过通配符,我们也可以让电脑明白,我们想找的文本是什么样子的。

举例介绍一下通配符的用处。比如我手头有一份txt格式的电子书,《醒世恒言》。如果直接传到Kindle中观看,没有带链接的目录,非常不方便。把txt文档做成带目录的mobi文件,过程可分为三步:1.用Word添加目录、2.另存为Html文件、3.用calibre转化成mobi文件。

Word中给每一级标题设置对应的样式,再依次点击「引用」、「目录」、「插入目录」菜单,设置每种标题样式的目录级别,再点确定就可以指定位置生成目录。

那么问题来了,《醒世恒言》一共四十卷,要对四十个标题设置样式,全部要一个个手动做吗?这时,通配符就派上用场。

仔细观察正文


第一卷 两县令竞义婚孤女
.......
第二卷 三孝廉让产立高名
.......
第三卷 卖油郎独占花魁
.......
.......
.......
第三十九卷 汪大尹火焚宝莲寺
.......
第四十卷 马当神风送滕王阁
.......
.......



总结出标题的特征:
1.单独一行。
2.以「第X卷」开头,和标题之间有个空格。X是「一二三四五六七八九十」中1至3个字的组合。

只要满足这两个条件,这一行的文本就是标题。如何把这两个原则告诉电脑呢?对应的通配符如下:

(第[一二三四五六七八九十]@卷 *)^13

解释: 
[一二三四五六七八九十]是可选的字符范围,@表示在其中任意选1个或多个字符。这两个合起来,就是任意中文数字的组合,涵盖了所有编号。
*表示任意字符,这里代表每一卷的标题。
^13是通配符中的段落标记

OK,有了通配符表达式,我们就可以设置标题了。在Word中按Ctrl+H,在「查找内容」中填入上述表达式。点击左下角的「更多」,勾上「使用通配符」。单击「替换为」后面的输入框,什么都不用输,再点击左下角的「格式」、「样式」,选择你想要的标题样式。如图:


最后点「全部替换」,四十个标题就全部变成了指定格式。

有人会问,「替换为」中明明什么都不填,为什么点了替换,没有把这些标题全删除呢?因为这里指定「替换为」的样式。如果没指定,则会删除文字,如果指定样式,则会将样式应用到找到的文本。

接下来再插入目录、保存为html、生成mobi文件,点几下鼠标就能办到。传入Kindle就可以使用刚生成的目录了。

除了Word外,还有Sublime Text、Notepad、EditPlus等文本编辑器也提供了通配符支持,它们之间的通配符略有出入。

编程中需要处理字符串(含义比「文本」广)的情况非常多,于是出现了更强大的正则表达式。那些乱七八糟的语法规则我也记不住,整理了一份列表,用到时查,用久了自然熟能生巧。有需要的可以收藏一下:

https://www.zybuluo.com/king/note/43674

这不是一篇正则表达式教程,仅仅是一份速查手册。

转载请注明出处

版权声明:本文为博主原创文章,未经博主允许不得转载。

推荐阅读