全。
我习惯于在Excel中编写VBA程序,但对Word中的结构不熟悉。我正在使用一个文本文件库来更新它们。其中许多是OCR文档,或者是手动输入的文档。
每个都有一个重复出现的模式,其中最常见的是不必要的回车。
例如,我正在查看几个文本文件,其中每行后面都有一个双回车符。搜索并替换所有双回车符将删除所有段落差异。但是,每行大约有30个字符,如果我手动执行以下逻辑,就会得到一个功能文档。
如果30+字符后面有两个回车符,我会用空格替换它们。如果双回车符之前少于30个字符,我会用一个回车符替换它们。
有没有人可以帮我写一些基本的代码,帮助我开始做这件事?然后,我可以为我拥有的每个文本文档的“模式”修改它。
例如:
In this case, there are more than
thirty characters per line. And I
will keep going to illustrate this
example.
This would be a new paragraph, and
would be separated by another of
the single returns.
我想要的代码会返回:
In this case, there are more than thirty character returns. And I will keep going to illustrate this example.
This would be a new paragraph, and would be separated by another of the single returns.
如果有人能扔出一些我可以玩的东西,请告诉我!
发布于 2018-09-04 11:05:22
您可以不编写代码(这是RegEx需要的),只需使用Word自己的通配符查找/替换工具即可完成此操作,其中:
Find = ([!^13]{30,})[^13]{1,}
Replace = \1^32
并且,要清理剩余的多段分隔符:
Find = [^13]{2,}
Replace = ^p
当然,您可以将上面的内容录制为宏...
发布于 2018-09-04 06:40:57
这是一个可能对你有用的RegEx:
(\n\n)(?<!\.(\n\n))
替换只是一个普通的空格,你可以在这里尝试它(并修改/调整它):https://regex101.com/r/zG9GPw/4
这个“模式”告诉RegEx引擎寻找换行符\n
,它出现在x2中,就像这个\n\n
(值得注意的是,这来自你的问题,在你的文件中可能是不同的,例如,可能是\r\n),它假设一个有效的换行符将由一个句号:\.
开始。
在RegEx中,句号是一个单字符通配符,因此需要用'\‘进行转义(n和r是普通字符,转义它们会告诉RegEx引擎它们代表换行符和返回符)。
所以..。该表达式查找一组x2换行符,然后使用负向回溯来排除前一个字符是句号的任何匹配项。
无论如何,这一切都在网站上解释过:
下面是如何使用NotePad++进行RegEx查找和替换(我不确定它是随RegEx提供的,还是需要一个插件,无论哪种方式都很简单)。但您可以设置位置、筛选器(针对特定文件类型)和其他选项(例如在子目录中搜索)。
除此之外,正如@MacroPod指出的那样,您也可以使用MS Word逐个文档地执行此操作,而不使用任何代码:)
https://stackoverflow.com/questions/52159384
复制