C# 用于字符串替换的正则表达式
我有大约100个文件需要替换:C# 用于字符串替换的正则表达式,c#,regex,C#,Regex,我有大约100个文件需要替换: 带Eval(“某物”)的Eval(“某物”)。ToEncodeString() Eval(“某物”).ToString()和Eval(“某物”).toEncodeString() 我正在编写一个小型C#应用程序,可以自动完成这项工作。但无法形成正则表达式。有人能帮我吗?你可以使用这个模式:@“\bEval\((?。+)”\)(?:\.ToString\(\)?” 细分: \bEval:匹配单词边界,以确保我们将“Eval”作为一个完整的单词而不是另一个单词的一部
我正在编写一个小型C#应用程序,可以自动完成这项工作。但无法形成正则表达式。有人能帮我吗?你可以使用这个模式:
@“\bEval\((?。+)”\)(?:\.ToString\(\)?”
细分:
:匹配单词边界,以确保我们将“Eval”作为一个完整的单词而不是另一个单词的一部分进行匹配\bEval
:文字的左括号和双引号(双引号出现两次,因为这是使用逐字字符串文字时的转义方式,即字符串前面的@符号)\(“”
:命名的“Value”捕获组,它是任何字符的非贪婪匹配(将在双引号处停止)(?。+?)
:结束双引号和结束括号“”\)
:(?:\.ToString\(\)?
位是非捕获组,然后我们将(?:…)
逐字匹配适当的转义,最后的.ToString()
使该组成为可选组?
@“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));
}
string[]输入=
{
@“Eval”(“某物”),
@Eval(“hello”).ToString()
};
字符串模式=@“\bEval\(?。+?)”\(?:\.ToString\(\)?”;
字符串替换=@“Eval(“${Value}”).ToEncodeString();
foreach(输入中的var输入)
{
Console.WriteLine(Regex.Replace(输入、模式、替换));
}
为什么不在记事本++中打开这些文件并替换其中的文本,将其应用于所有打开的文件引号中的字符串可以是任何内容。所以我需要使用正则表达式。如果我使用TextPad,搜索正则表达式和替换正则表达式是什么?你试过什么吗?显示会让人们看到你已经尝试过,并且你不是在寻找“为我编码/免费”答案。顺便说一句,我可以给你一个提示:\w
匹配任何单词字符,+
表示1次或多次。更多信息请参见此处:我尝试使用Regex.Replace(txt,“([Eval(]\”[a-z0-9]+\“[)])?”,”);但不确定如何指定替换字符串以及regexp。@Nevyn使用时(即字符串前面的@符号),可以使用双引号两次来转义双引号。如果没有逐字字符串文字,您将用反斜杠转义双引号,如\“hello\”
,但使用它们,它是“hello”
。为了澄清我为什么一开始就使用它们,它使得使用转义序列比在反斜杠上加倍更容易,而且正则表达式对于元字符往往有许多反斜杠。好的,这很有意义。我不知道你能做到。看起来很奇怪:-)@ahmad非常感谢。我一直在努力匹配论文的开头和结尾。谢谢