我目前正面临一个(小)阻塞问题。我想用正则表达式替换一个子串。但这里有个诀窍:我吸取正则表达式。正则表达式:替换字符串
Regex.Replace(contenu, "Request.ServerVariables("*"))",
"ServerVariables('test')");
基本上我想更换什么是之间的“通过‘测试’。我想”。{*}”的模式,但它不能正常工作。
能给我一些技巧,我会很感激的
我目前正面临一个(小)阻塞问题。我想用正则表达式替换一个子串。但这里有个诀窍:我吸取正则表达式。正则表达式:替换字符串
Regex.Replace(contenu, "Request.ServerVariables("*"))",
"ServerVariables('test')");
基本上我想更换什么是之间的“通过‘测试’。我想”。{*}”的模式,但它不能正常工作。
能给我一些技巧,我会很感激的
有几个问题需要注意。
.
,parens,引号) - 你需要用斜杠来转义它们。而且你还需要用另一个斜杠来跳过斜线,因为我们使用的是C#字符串,除非在字符串前添加@
,在这种情况下,转义规则是不同的。.*
。在这种情况下,您需要匹配任何数量的非引号字符,即[^"]*
。最终的结果是
var result = Regex.Replace(contenu,
@"Request\.ServerVariables\(""[^""]*""\)",
"Request.ServerVariables('test')");
在我的正则表达式的基于知识的纯粹(而不是他们如何在C#中完成),你想要的模式可能是:
"[^"]*"
即 - 匹配“然后匹配一切不是“那么马” TCH另一个“
您可能需要转义双引号,让您的正则表达式解析器实际上匹配他们......这就是我不知道C#
尽量避免在那里你可以将' 。''在正则表达式中,通常可以通过避开其他字符找到想要的内容,例如[^“] +未引用,或者([^)] +)不在括号内。所以你可能只想要“([^”] +)“这应该给你在[0]的整个事情,然后在[1]你会发现'测试'。 '与''我想。
死的权利。转义版本看起来像'Regex.Replace(contenu,“Request \\。ServerVariables \\(\”[^ \“] * \”\\)“,”Request.ServerVariables(\“test \”)“ );''或'Regex.Replace(contenu,@“Request \ .ServerVariables \(”“[^”“] *”“\)”,@“Request.ServerVariables(”“test”“)”);' – LukeH