所以说啊小伙子你思想还没转变过来。
都用爬虫了,为什么还纠结于EverEdit本身呢?它本来就不是用来干批量处理的,而且它那个很有点迷的正则引擎也是怪的一批。
你打开排版助手写的就会发现他都没用过EverEdit自带的正则提供的ReplaceAll,全都是JavaScript的replace和各种函数组合实现功能的。
回到你的这个问题,换行那是EverEdit本身引擎的问题或者说特性,所以我用JavaScript的replace。
保存到Everedit\macro\test.ejs,直接一句:
ActiveDoc.Text = ActiveDoc.Text.replace(/A[\s\S]*?B/g, 'AB');
就完成了。
有些支持单行模式的直接.*都可以。话说这个单行模式和多行模式真不知道哪个鬼才翻译的,根本没得逻辑好吗?!
爬虫程序本身会提供正则及其他字符串方法,也是借此才能实现批量初始化,当然这就得靠你自己写了。
比如看起来很麻烦的章节递增,那是因为正则本身没有逻辑运算的功能,那排版助手的@1-9+Tab快速生成1-9章怎么实现的?输入的数字直接~~转换成数字类型,然后for循环输出即可。
类似的,你用EverEdit排版遇见比较大的任务量,最简单的录制宏就行,细致一些可以把写好的函数借过来,再更细分你直接自己写都行,零基础像我这样的最多一个星期也基本能实现自己要的需求了,这里边还有至少一大半的时间是因为教程没说需要自己尝试的各种特性。
举个例子,我修改绿文常常需要备份,按时间作区分,怎么快速备份呢?
首先获取文件路径,用ActiveDoc.PathName,再用lastIndexOf('\.')将路径拆分开。
用new Date获得时间,再分别getHours等等,和前面路径拆分的结果拼接成字符串,得到了副本的绝对路径。
然后用文件流写入文本,CreateObject('ADODB.Stream'),写入完就创建完成了。
或者前面用CreateObject('Scripting.FileSystemObject'),路径和文件名文件扩展名直接获取,更省事。
自己用不需要那么多反馈,不需要提醒保存之类的,满打满算差不多就二十多行。
再举个例子,绿文替换人称,对话外的很好操作批量环视否定就行,但是对话内要用到环视肯定,EverEdit不行,脚本又不能逆序环视,怎么办?
replace搜索整个对话,再用回调函数获得匹配到的对话内容,再用replace替换一遍匹配结果得到处理好的用来替换的文本,同时统计替换的次数,回调函数结束返回用于替换的文本。
虽然取了巧,但也实现了功能,然后有的对话会用到别的左右边界,那就把上面的部分做成函数,然后后面传入不同的左右边界,也很简单就完成了。
所以说真打算走爬虫了就直接一步到位,把基础的无需确认的重复操作都写成一句句代码就好,不要让它占用你宝贵的时间。
如果一个工具不能完成需求,那就再来一个工具。