我有几个 Word 文档,其中的换行符(段落分隔符)纯粹是出于美观原因而添加的(可能是人为添加的,但也可能是由 OCR 系统或类似系统添加的)。我想从文档中删除这些多余的换行符。基本上,“多余的”换行符是指两边都是小写字母的换行符(带有可选的空格)。但不幸的是,如果我想在 Word 中查找段落分隔符(^p),我不能使用字符类来仅查找小写字母([az]),反之亦然。
基本上,我想在文档上使用多行正则表达式,这样我就可以找到类似以下内容:
/[a-z]\s*\n\s*[a-z]/
并将换行符替换为空格。有什么方法可以同时搜索段落标记(Word 中的 ^p)和字符类(或者一般只是小写字母)吗?
例子:
标题¶
这是一些文本。
不匹配,但是
此文本位于一行上并
转到下一行。
将会匹配,并且“¶”将被空格替换。
答案1
从你所说的内容中,我无法判断你是否知道,如果你More >>
在 Microsoft Word“查找和替换”对话框中单击,你将获得一个包含“使用通配符”选项的“搜索选项”面板。请注意,它支持神秘的通配符语言,而不是正则表达式符号。要开始使用此选项,请使用[a-z]^13[a-z]
。出于某种原因,你不能^p
在通配符搜索中使用,但^13
它是启用通配符的等价物^p
。
空格有点棘手。我能想到的最好的办法是,你必须使用以下方法进行四次搜索:
[a-z]^13[a-z]
[a-z][^t ]{1,99}^13[a-z]
[a-z]^13[^t ]{1,99}[a-z]
, 和[a-z][^t ]{1,99}^13[^t ]{1,99}[a-z]
因为,奇怪的是,^t
在通配符模式下有效。 \s
并且*
并不意味着它们在正则表达式中的含义。 {n,m}
做有效,但n
必须是正数。请注意,您不能只用空格替换匹配项,因为匹配项中包含最后一个字母和第一个字母,并且会遭到破坏。
-
为了获得额外的分数:您可能希望在换行符之前查找(连字符) 作为最后一个打印字符;但一定要解决以下两种 (不同) 的情况:
…两边 都是小写字母¶ (可选空格)。不幸
的是,¶……
答案2
^13
是 的启用通配符的等效项^p
。
这几乎是正确的,但请注意^13
和之间有细微的差别^p
。用 替换的段落分隔符^13
似乎会丢失 Word 中常规样式段落分隔符所具有的双倍空间。
first paragraph¶
second paragraph¶
third paragraph¶
变成
first paragraph¶
second paragraph¶
third paragraph¶
要解决此问题,请确保^p
在查找和替换对话框的替换部分中使用段落标记。使用通配符的限制^p
仅适用于对话框的查找部分。