正则表达式查找缩写

Øby*_*Øby 5 regex find-and-replace libreoffice libreoffice-writer

(这是我之前提出的一个问题的衍生内容。)

我正在尝试为 LibreOffice Writer 设计一个正则表达式,以查找我的博士论文中的所有缩写。目前我有以下内容:

\b(?:[A-Z]){2,}
Run Code Online (Sandbox Code Playgroud)

这几乎完成了这项工作,因为它识别出所有以多个大写字母开头的单词。但是,我有一些缩写它没有捕获,即:

CoE RoR RoC
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想要一个 RegEx 来标识所有至少包含两个大写字母的单词,尽管它们不必位于单词的开头。但我在尝试创建它时不知所措。有人能指出我正确的方向吗?

jkm*_*ale 7

我对这个问题的解释与 Jim K 略有不同。假设所有缩写都以大写字母开头,并且在单词中的任何位置至少包含一个大写字母,则不必在现有的正则表达式中添加太多内容:

\b(?:[A-Z][a-z]*){2,}
Run Code Online (Sandbox Code Playgroud)

大写字母与任意数量的小写字母配对,有效地消除了单词中大写字母之间的空格。这些对中至少有两个意味着至少有两个大写字母。

如果缩写必须包含至少两个大写字母但不必以一个开头,请在大写字母检查前面添加一个额外的小写字母检查:

\b(?:[a-z]*[A-Z][a-z]*){2,}
Run Code Online (Sandbox Code Playgroud)

这两个内容都根据吉姆的测试文本进行了测试。(谢谢,吉姆!)