REGEX Visual Studio 2013 查找和更改

REGEX Visual Studio 2013 find and change

我想在测试中更改 class 名称和方法的命名。它们有数百个,它们非常长且难以阅读。下划线会有所帮助。

我创建了正则表达式:

(public class [A-Z][a-z]*(_[A-Z][a-z]*)*)(?<x>[A-Z])

替换模式:_${x}

这就是我的例子: 来自:public class VeryLongClassNameTestScenarioTwentySeven

收件人:public class Very_LongClassNameTestScenarioTwentySeven

下次使用:public class Very_Long_ClassNameTestScenarioTwentySeven

下次使用:public class Very_Long_Class_NameTestScenarioTwentySeven

使用多次后,所有名称都应更改。你能帮我找到一次可以完成的正则表达式吗?

我想 VS 中的正则表达式不支持将字母从大写转换为小写?

谢谢

我现在无法访问我的 VS 工作站,但我认为以下 应该 工作:

查找:(?<=public class .*?)([a-z])([A-Z])

替换为:_

(我在 http://regexstorm.net/tester 上测试过)


编辑: 现在我坐在我的 VS 工作站前,这是我的测试结果:

它 "kinds of" 工作......奇怪的是,使用以下代码:

public class ThisIsLongClassName
{ }

public class AnotherLongClassName
{ }

public class WhoaThisNameIsEvenLonger
{ }

现在,使用 Shift+Ctrl+F:

进行测试
  • 如果我"Find Next",它正确地跳转在替换应该发生的位置之间。所以正则表达式是正确的。
  • 但是,当我单击 "Replace" 时,它替换了突出显示行下方的行 。例如,高亮显示在第一行的 sI 上,更改发生在 第二行 行的 rL
  • 最后,点击 "Replace All" 没有任何反应

我认为 VS2013 是 b0rked。至少我是。


编辑 2: 因此,我建议您创建一个小程序并让它 'have a go' 通过您的文件。将更简单的正则表达式,因为你所要做的就是确保 .TrimStart()-ed 行以 'public class' 开头,然后用 _ 做一个简单的正则表达式替换 ([a-z])([A-Z])在那条线上。