在 Microsoft Word 中的“查找”中匹配字符范围和分段符

Dre*_*ate 2 regex microsoft-word microsoft-word-2010

我有几个 Word 文档,其中添加换行符(段落分隔符)纯粹是出于美观的原因(可能是人类,但也可能是 OCR 系统或类似的东西)。我想从文档中删除这些额外的换行符。基本上,“额外”换行符是两边都被小写字母包围的换行符(带有可选的空格)。不幸的是,如果我想在 Word (^p) 中找到分段符,我不能使用字符类来只找到小写字母 ([az]),反之亦然。

基本上我想在文档上使用多行正则表达式,这样我就可以找到如下内容:

/[a-z]\s*\n\s*[a-z]/
Run Code Online (Sandbox Code Playgroud)

并用空格替换换行符。有什么办法可以同时搜索段落标记(Word 中的 ^p)和字符类(或者一般来说只是小写字母)?

例子:

标题¶
这是一些文字。

不会匹配,但是

这段文字在一行上,¶
继续到下一行。

将匹配并且“¶”将被替换为空格。

Sco*_*ott 5

我无法从您所说的内容中看出您是否知道,如果您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必须是积极的。请注意,您不能只用空格替换匹配项,因为最后一个前面的字母和第一个后面的字母都包含在匹配项中,并且会被破坏。

额外的功劳:您可能希望-在换行符之前寻找(连字符)作为最后一个打印字符;但一定要解决这两种(不同的)情况:

                                                          ...
两边被小写-¶大小写字母包围(带有可选的空格)。不幸的
是,不过,……