论文部分内容阅读
最近帮教授整理一个藏书目录,经过几天工作整理之后终于向教授提交了一份有700多本医书的文本列表(如图1)。但教授看了之后,要求我给每本书加上书名号,这样更正规。面对这个有700多本书的列表,我有点傻眼了,一本一本地去加书名号吗?太费事,用批量操作吗?琢磨了半天也没有找出好方法。无意中在《电脑爱好者》杂志中看到一篇利用正则表达式解决文本替换的文章,受到启发,于是开动脑筋,加以发挥,问题得到解决。
第一步:
用EmEditor编辑器打开这个文本列表,通过Ctrl+H快捷键启动“替换”窗口,在“查找”框中输入“^(..) (.*?) ”字符串,在“替换为”框中输入“\1《\2》”字符串(如图2)。这时,点击“查找下一个”按钮,可以看到,所有满足条件的编号和书名均自动标上了色块(如图3),说明条件构造正确。点击“全部替换”按钮之后,所有符合条件的图书均自动加上了书名号(如图4)。
第二步:
对上面的“查找”条件稍做改动,只在第一组小括号内增加一个小数点符号(如图5),执行查找,你会发现所有两位数编号的图书都被加上色块,“替换为”内容保持不变,点击“全部替换”完成两位数编号图书的替换。
第三步:
同理,再增加一个小数点符号,完成三位数图书的书名替换。至此,700多本书的书名号加完毕,总共一两分钟完全搞定。
小提示
若列表中有数万本书,则只需再加一个点,成批替换。有数十万本,也只是多加一个小数点的问题。这样,即使是有千万本书,书名号替换也是多加一个小数点的问题,几秒钟即可搞定,效率可以算是很高吧。
附加说明:为便于读者理解,需要对替换框中的参数做一个简要说明。
“查找”框中的两组()定义了两组字串,分别暗含编号为1和2;
^符号表示从开头搜索,第一组()内的两个点表示搜索任意两个字符,第二组()内的符号(.*?)与后续的一个空格表示搜索任意内容,一直搜索到遇到空格为止;
“替换为”框中的\1表示原封不动引用以上定义的第一组()内的内容,\2表示原封不动地引用以上定义的第二组()内的内容,书名号则是我们需要加上去的实质性内容。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
第一步:
用EmEditor编辑器打开这个文本列表,通过Ctrl+H快捷键启动“替换”窗口,在“查找”框中输入“^(..) (.*?) ”字符串,在“替换为”框中输入“\1《\2》”字符串(如图2)。这时,点击“查找下一个”按钮,可以看到,所有满足条件的编号和书名均自动标上了色块(如图3),说明条件构造正确。点击“全部替换”按钮之后,所有符合条件的图书均自动加上了书名号(如图4)。
第二步:
对上面的“查找”条件稍做改动,只在第一组小括号内增加一个小数点符号(如图5),执行查找,你会发现所有两位数编号的图书都被加上色块,“替换为”内容保持不变,点击“全部替换”完成两位数编号图书的替换。
第三步:
同理,再增加一个小数点符号,完成三位数图书的书名替换。至此,700多本书的书名号加完毕,总共一两分钟完全搞定。
小提示
若列表中有数万本书,则只需再加一个点,成批替换。有数十万本,也只是多加一个小数点的问题。这样,即使是有千万本书,书名号替换也是多加一个小数点的问题,几秒钟即可搞定,效率可以算是很高吧。
附加说明:为便于读者理解,需要对替换框中的参数做一个简要说明。
“查找”框中的两组()定义了两组字串,分别暗含编号为1和2;
^符号表示从开头搜索,第一组()内的两个点表示搜索任意两个字符,第二组()内的符号(.*?)与后续的一个空格表示搜索任意内容,一直搜索到遇到空格为止;
“替换为”框中的\1表示原封不动引用以上定义的第一组()内的内容,\2表示原封不动地引用以上定义的第二组()内的内容,书名号则是我们需要加上去的实质性内容。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文