【发布时间】:2018-11-14 12:30:49
【问题描述】:
我有一段 VBA 代码使用Find 来查找文档中的所有首字母缩写词。它通过搜索由 2 个或更多字符长的大写字母组成的所有单词来实现这一点...
<[A-Z]{2,}>
问题在于它无法识别所有首字母缩略词,例如 CoP、W3C、DVD 和 CD-ROM。它分两部分选取带连字符的首字母缩略词,这些部分并不理想,但在用户检查列表时是允许的。我还可以通过不使用搜索到单词末尾来选择以“s”或其他字符结尾的单词...
<[A-Z]{2,}
但这不会将任何非大写字符作为它找到的单词的一部分。
是否有一个表达式可以让我在任何位置搜索具有两个或多个大写字母的单词并找到整个单词?
【问题讨论】:
-
您无法使用单个通配符模式来做到这一点。 MS“正则表达式”(实际上不是“常规”)不支持可选模式。不过,您可以使用几种模式来找到您正在寻找的确切模式。
-
\b(?:[A-Z0-9]+[a-z\-]?){2,}\b -
@WiktorStribiżew 谢谢,似乎是这样。我能看到的最简单的方法是找到所有以大写字母 (
<[A-Z]*>) 开头的条目,然后针对.+[A-Z]测试找到的每个单词。这很好用(假设所有首字母缩写词都以大写字母开头),但需要额外的引用,这使得共享变得更加困难。
标签: regex vba ms-word find acronym