0

我正在尝试获取 '.UpdateText("Text here");' 的所有实例 并将其转换为 '.Text = "Text here";'

我已经梳理了正则表达式站点,但我似乎找不到这么简单的东西......任何帮助将不胜感激!

4

2 回答 2

3

确切的正确答案取决于使用的工具。

这是一个使用 sed 的示例:

sed 's,\.UpdateText(\([^)]*\));,.Text = \1;,'

如果评估它的工具支持正则表达式,它可能是以下之一:

.*UpdateText(\([^)]*\)).*
.*UpdateText\(([^)]*)\).*

并非所有正则表达式工具都支持“捕获组”。而且,这些工具在识别组的语法和在输出中使用它的语法上都存在差异。

对于 Visual Studio 2008 查找和替换 ( http://msdn.microsoft.com/en-us/library/vstudio/ewy2t5e0.aspx ),这应该可以解决问题:

Find:    \.UpdateText(\([^)]*\));
Replace: .Text = $1

据此: http: //msdn.microsoft.com/en-us/library/2k3te2cs%28v=vs.90%29.aspx

可以在 Find what 和 Replace with 中使用的正则表达式与在 .NET Framework 编程中有效的正则表达式之间存在许多语法差异。例如,在“查找和替换”窗口中,大括号 {} 用于标记要替换的表达式:要将每次出现的“不”更改为“不”,您可以使用查找表达式 {does}n't 和替换表达式\1 不是。

所以,这适用于我在 Visual Studio 2012 中:

Find:    \.UpdateText\(([^)]*)\)
Replace: .Text = $1
于 2013-09-03T21:50:54.810 回答
0
Find:      \.UpdateText\({:q}\);
Replace:   .Text = \1;

Note how parentheses need to be escaped in find. ':q' is quoted string in VS regex.

于 2013-09-05T04:46:13.200 回答