用于查找尚未更新的短语的正则表达式

Regex for finding a phrase that isn't already updated

我正在寻求 Regex 方面的帮助。我有一个项目,我正在编写一个 VBA 宏来通过 find/replacing 一个短语更新数十万个文档。短语是 "Company Name",需要是 "Company Name LLP"。问题是 Find/Replace 我无法阻止 "Company Name LLP" 变成 "Company Name LLP LLP" (两个 LLP),如果它以前被更新过的话。我的解决方法是找到 "LLP LLP" 并用 "LLP" 替换,但是使用 Regex 显然有更好的方法。我想要一个可以找到所有 "Company Name" WHERE NOT already "Company Name LLP" 的正则表达式(更好的是它还会用逗号排除 "Company Name, LLP")。谁能帮我构建这个正则表达式? TIA!

您可以使用 (?!\s+LLP) 否定前瞻来避免在 1+ 个空格和 LLC 单词之前匹配 Company Name

Company Name(?!\s+LLP)

如果这些是完整的单词,请用单词边界括起来:

\bCompany Name\b(?!\s+LLP\b)

要使表达式不区分大小写,请在 RegExp 对象上启用不区分大小写模式。

示例:

Set myRegExp = New RegExp
myRegExp.IgnoreCase = True 'Here, case insensitive mode is ON
myRegExp.Global = True
myRegExp.Pattern = "\bCompany Name\b(?!\s+LLP\b)"