Regex 替换解决方案中所有字符串中名称的所有实例

Regex 替换解决方案中所有字符串中名称的所有实例,regex,visual-studio,replace,Regex,Visual Studio,Replace,我们有一个包含许多项目的大型解决方案,在整个项目的表单、消息等中,我们都引用了一个公司名称。多年来,这家公司的名称一直保持不变,所以它本来不打算改变,但现在已经改变了 该应用程序特定于美国的一个州,因此从未考虑或使用本地化/字符串资源文件 一个快速查找单词的所有实例会产生1309行,但我们只需要更改最终实际显示给用户的行(按钮文本、消息文本等) 当我们有时间确保没有任何中断时,代码可以在以后进行重构以使其更具可读性,但目前我们正在尝试查找所有可见实例并替换它们 有什么方法可以轻松找到这些“实例”

我们有一个包含许多项目的大型解决方案,在整个项目的表单、消息等中,我们都引用了一个公司名称。多年来,这家公司的名称一直保持不变,所以它本来不打算改变,但现在已经改变了

该应用程序特定于美国的一个州,因此从未考虑或使用本地化/字符串资源文件

一个快速查找单词的所有实例会产生1309行,但我们只需要更改最终实际显示给用户的行(按钮文本、消息文本等)

当我们有时间确保没有任何中断时,代码可以在以后进行重构以使其更具可读性,但目前我们正在尝试查找所有可见实例并替换它们

有什么方法可以轻松找到这些“实例”吗?也许是一种正则表达式,可以在VisualStudio中的“查找所有”功能中使用,仅当单词被包装在引号中时才将其拉出


在我尝试让我的工作更轻松、花费的时间远远超过逐行操作所需的时间之前,我想我会看看是否有人曾经做过类似的事情,并找到解决方案。

VS regex的功能相当精简。它可能代表了使用全功能正则表达式可以完成的20%。这不足以满足你的需要。例如,解决这个问题的一种方法是VS regex不支持的

如果我站在你的立场上,我会编写或编写一个在VisualStudio之外运行的C#程序集,只需快速浏览所有文件(具有特定的文件扩展名)并修复所有问题。然后重新加载到VisualStudio,就完成了。好吧,如果一切顺利的话

最终,您必须注意的是这样的代码:

Log.WriteLine("Hello " + m_CompanyName + " There");
在这种情况下,regex会认为“m_CompanyName”出现在两个引号之间,但这不是您的意思。在这种情况下,您需要更复杂的知识,我想您可以通过一个。

尝试一下。(我希望您的代码受源代码管理!)

并替换为

NewFoobar\1
解释

Foobar
您正在搜索的名称

[^”]*“
缺少非贪婪修饰符的解决方法
[^”]
表示匹配除
以外的任何内容,即在第一个
之前,此项匹配任何内容

([^“]*”[^“]*”)*
以确保您只匹配内部引号。这确保后面只有完整的引号集

[^”]*
确保在行尾
$


{}
花括号将公司名称后面的所有内容放入一个捕获组,您可以使用
\1

查找112行:比1309好得多。将手动检查以确保没有问题。非常感谢。感谢文章参考,以及VS regex不支持整个regex的信息。我以前确实遇到过这个问题,但没有意识到这是故意的(而不是我的错误)。很高兴知道!
NewFoobar\1