2016-05-11 167 views
3
oldvalue = "RGB = (255,000,255,000)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
        Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            oldvalue, 
            newvalue)); 

这并非取代新值。如何用正则表达式替换包含圆括号(括号)的文本?

但它与

oldvalue = "RGB 1" 
newvalue = "RGB 0" 
+0

你肯定也有_exact_比赛'RGB =''中Abc.txt'(255000255000)? –

+3

正则表达式中的括号有特殊含义,所以会混淆 – BugFinder

+0

@Anton yes ABC.txt中有一个完全匹配的RGB =(255,000,255,000) –

回答

4

既然你要替换的字符串是行字符串的工作,不使用Regex.ReplaceString.Replace

string oldvalue = "RGB = (255,000,255,000)"; 
string newvalue = "RGB = (255,255,000,000)"; 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
      File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt").Replace( 
          oldvalue, 
          newvalue)); 
+0

你是什么意思的行字符串? –

+0

@DevDroneBhowmik好吧,我的意思是你找到的字符串不需要找到正则表达式 –

+0

那么我应该什么时候使用正则表达式呢? –

0

由于oldvalue包含有特殊含义的字符在像()正则表达式中,你应该使用\字符来逃避它们。

oldvalue = "RGB = \\(255,000,255,000\\)" 
//or oldvalue = @"RGB = \(255,000,255,000\)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt", 
        Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            oldvalue, 
            newvalue)); 
0

请尝试水木清华这样的:

regexp = "(.*)\((.*)\)(.*)" 
newvalue = "RGB = (255,255,000,000)" 
File.WriteAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt",  
    Regex.Replace(File.ReadAllText("C:\\Users\\devdrone\\Desktop\\Abc.txt"), 
            regexp, 
            newvalue)); 
+0

这将取代'wasd()'这不是所需要的... –

相关问题