如何使用正则表达式替换双引号括起来的字符串?

时间:2016-09-10 04:16:55

标签: regex c#-4.0

我使用正则表达式查找并替换双引号内的字符串。下面是我使用的正则表达式。我得到的输出是新的是在正则表达式之前。

int portNum = 5969;
var input = File.ReadAllText(@"C:\Users\aaa\look.ts");
var outputFileText = Regex.Replace(input, @"baseurl(\s*)= (\s*).*?", @"baseurl = " + "\"http://localhost:" + portNum + "\"");

我得到的输出是

var baseurl = "http://localhost:5969/""http://www.google.com/";

预期输出

var baseurl= "http://localhost:5969/"

1 个答案:

答案 0 :(得分:1)

你最后不应该使用贪婪量词.*?,否则它会尽可能少地匹配。在这种情况下,由于.*?之后没有任何内容,因此它将匹配0个字符。

为了让它发挥作用,让它贪婪地匹配直到结束:

int portNum = 5969;
var input = File.ReadAllText(@"C:\Users\aaa\look.ts");
var outputFileText = Regex.Replace(input, @"baseurl(\s*)= (\s*).*",
                     @"baseurl = " + "\"http://localhost:" + portNum + "\"");