C# 正则表达式:替换字符串

C# 正则表达式:替换字符串,c#,regex,replace,C#,Regex,Replace,我目前面临一个(小)阻碍问题。我想使用正则表达式将一个子字符串替换为另一个子字符串。但这里有一个诀窍:我在正则表达式上很烂 Regex.Replace(contenu, "Request.ServerVariables("*"))", "ServerVariables('test')"); 基本上,我想替换“by”test之间的任何内容。我尝试将“{*}”作为一种模式,但它不起作用 你能给我一些建议吗,我会很感激的!完全基于我对正则表达式的了解(而

我目前面临一个(小)阻碍问题。我想使用正则表达式将一个子字符串替换为另一个子字符串。但这里有一个诀窍:我在正则表达式上很烂

Regex.Replace(contenu, "Request.ServerVariables("*"))",
                       "ServerVariables('test')");
基本上,我想替换“by”test之间的任何内容。我尝试将“{*}”作为一种模式,但它不起作用


你能给我一些建议吗,我会很感激的!

完全基于我对正则表达式的了解(而不是它们在C#中是如何完成的),你想要的模式可能是:

"[^"]*"
ie-匹配一个“然后匹配所有不匹配的”然后匹配另一个


您可能需要对双引号进行转义,以使您的正则表达式解析器与它们真正匹配。。。这就是我对C#

所不知道的,仅仅基于我对正则表达式的了解(而不是它们在C#中的实现方式),您想要的模式可能是:

"[^"]*"
ie-匹配一个“然后匹配所有不匹配的”然后匹配另一个


您可能需要对双引号进行转义,以使您的正则表达式解析器在它们上真正匹配……这就是我不知道的关于C的内容。

尝试避免在正则表达式中使用“*”,您通常可以通过避免使用其他字符来找到想要的内容,例如[^”]+不带引号,或([^]+)不在括号中。因此,您可能只需要“([^”]+)”,它将在[0]中为您提供全部内容,然后在[1]中您将找到“test”


我想你也可以用“”替换“”。

尽量避免使用“*”在正则表达式中,你通常可以通过避免使用其他字符,例如[^”]+不带引号,或者([^]+)不在括号中找到你想要的字符。因此,你可能只需要“([^”]+”,它应该在[0]中给出全部内容,然后在[1]中你会找到“test”


我想你也可以用“”来代替“”。

有几个问题需要注意

  • 你在正则表达式中使用了特殊字符(
    ,parens,quotes)--你需要用斜杠来转义这些字符。你还需要用另一个斜杠来转义斜杠,因为我们使用的是C字符串文字,除非你在字符串前面加上
    @
    ,在这种情况下,转义规则是不同的
  • 匹配“任意数量的任意字符”的表达式是
    *
    。在这种情况下,您需要匹配任意数量的非引号字符,即
    [^]*
  • 与上面的(1)不同,替换字符串不是正则表达式,因此不需要任何斜杠
  • 您需要将replace的返回值存储在某处
  • 最终结果是

    var result = Regex.Replace(contenu,
                               @"Request\.ServerVariables\(""[^""]*""\)",
                               "Request.ServerVariables('test')");
    

    有几个问题需要注意

  • 您在正则表达式中使用了特殊字符(
    ,paren,quotes)--您需要用斜杠对这些字符进行转义。你还需要用另一个斜杠来转义斜杠,因为我们在C#string文本中,除非你在字符串前面加上
    @
    ,在这种情况下,转义规则是不同的
  • 匹配“任意数量的任意字符”的表达式是
    *
    。在这种情况下,您需要匹配任意数量的非引号字符,即
    [^”]*
  • 与上面的(1)不同,替换字符串不是正则表达式,因此不需要任何斜杠
  • 您需要将replace的返回值存储在某处
  • 最终结果是

    var result = Regex.Replace(contenu,
                               @"Request\.ServerVariables\(""[^""]*""\)",
                               "Request.ServerVariables('test')");
    

    Taryn Easts正则表达式包含*。如果它只是任何值的占位符,则应将其删除:

    "[^"]"
    

    顺便说一句:你可以用这个很酷的编辑器来测试这个正则表达式:

    Taryn Easts正则表达式包括*。如果它只是任何值的占位符,你应该删除它:

    "[^"]"
    

    顺便说一句:你可以用这个很酷的编辑器测试这个正则表达式:

    完全正确。转义的版本看起来像
    regex.Replace(contenu,“Request\\.ServerVariables\\(\”[^\“]*\“\\”),“Request.ServerVariables(\“test\”)
    Regex.Replace(contenu,@“Request\.ServerVariables\(“[^”“]”]*“\”),@“Request.ServerVariables”(“test”)完全正确。转义版本将类似于
    Regex.Replace(contenu,“Request\\.ServerVariables\\(\“[^\”]*\\”),“Request.ServerVariables(\“test\”);
    Regex.Replace(contenu,@“Request\.ServerVariables\(“[^”“]*\”),@“Request.ServerVariables”(“test”);