一本书如果没有目录总觉得没有安全感,读起来也不方便。往往我们下载的一些pdf是没目录的。PdgCntEditor是一个很好用轻量级的pdf目录编辑器。但是这些书的目录往往很多,手动编辑会很麻烦。所以我常常都会去搜索该书的目录(带有页码),一般豆瓣读书或者百度百科可以搜到。这个带页码的目录一般会有一个问题,就是页码前是空格而不是tab,这就导致目录无法正常使用。
以上是背景,有点罗嗦。总结就是我们要将目录中页码前面的空格替换为tab。此时正则表达式是一个很好的工具。首先是搜索部分,很简单就是" [0-9]+" (注意'['前面有个空格),这个表达式的意思是搜索一个字符串,这个字符串包含一个空格和多个数字('+'表示多个)。接着是替换部分,注意这里是部分替换,因为我们要保留这些数字,也就是页码。于是我去搜索正则表达式部分替换,搜到这篇文章《正则表达式的部分替换 $1~$99》,其中的关键是既然是部分替换,就要把表达式分成几个部分。
于是,我们得到最终答案,搜索部分:"( )([0-9]+)"(这里利用括号将表达式分为两个部分),替换部分:" $2"(注意$2前面是一个tab,这里是在编辑器打了一个tab然后复制,有些编辑器支持将tab写成'\t',但是PdgCntEditor不支持)。
总结:这篇文章全是废话,讲的案例也非常简单,那它的意义是什么呢?对于一个熟练掌握正则表达式的人来说,它确实一点用没有。但是对于新手,对于那些对正则敬而远之的人来说,它在述说一个道理,学正则是一个有用的且并不困难的事情。即使是最复杂的表示式,我们也可以将其拆成一个个简单的部分。
转载于:https://juejin.im/post/5b0e48b36fb9a00a18514d4e