我正在尝试获取 '.UpdateText("Text here");' 的所有实例 并将其转换为 '.Text = "Text here";'
我已经梳理了正则表达式站点,但我似乎找不到这么简单的东西......任何帮助将不胜感激!
我正在尝试获取 '.UpdateText("Text here");' 的所有实例 并将其转换为 '.Text = "Text here";'
我已经梳理了正则表达式站点,但我似乎找不到这么简单的东西......任何帮助将不胜感激!
确切的正确答案取决于使用的工具。
这是一个使用 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
Find: \.UpdateText\({:q}\);
Replace: .Text = \1;
Note how parentheses need to be escaped in find. ':q' is quoted string in VS regex.