我有100个文件需要替换:
我正在编写一个可以自动执行此操作的小型C#应用程序。但无法形成正则表达式。有人会帮帮我吗?
答案 0 :(得分:2)
您可以使用此模式:@"\bEval\(""(?<Value>.+?)""\)(?:\.ToString\(\))?"
故障:
\bEval
:匹配字边界以确保我们将“Eval”匹配为整个单词而不是另一个单词的一部分\(""
:字面左括号和双引号(双引号出现两次,因为当使用逐字字符串文字时它们是如何被转义的,即字符串前面的@符号)(?<Value>.+?)
:名为“Value”的捕获组,它是任何字符的非贪婪匹配(将以双引号停止)""\)
:关闭双引号和右括号(?:\.ToString\(\))?
:(?:...)
位是非捕获组,然后我们将.ToString()
字面上与适当的转义相匹配,最后?
使此组可选1} LI>
替换模式为@"Eval(""${Value}"").ToEncodedString()"
,这很容易理解。重要的部分是使用${Value}
引用命名的捕获组“Value”。
示例代码:
string[] inputs =
{
@"Eval(""something"")",
@"Eval(""hello"").ToString()"
};
string pattern = @"\bEval\(""(?<Value>.+?)""\)(?:\.ToString\(\))?";
string replacement = @"Eval(""${Value}"").ToEncodedString()";
foreach (var input in inputs)
{
Console.WriteLine(Regex.Replace(input, pattern, replacement));
}