我需要将一些旧的 VB.net 代码转换为 c#,为了加快速度,我计划使用正则表达式。
例如,在这段代码中:
if (Request.ServerVariables("SERVER_NAME").StartsWith("user"))
userS = true;
if (Request.ServerVariables("HTTP_X_ORIGINAL_URL") != null && Request.ServerVariables("HTTP_X_ORIGINAL_URL").StartsWith("/contai"))
UseContai = true;
我想用 替换Request.ServerVariables("...")
,Request.ServerVariables["..."]
我尝试过使用Request.ServerVariables("(.*)")
它来匹配它,但是没有用。有什么建议吗?
答案1
括号是 REGEX 中的特殊字符,因为它们会创建“匹配组”。因此,如果您需要使用反斜杠 ( \
) 来转义它们。您还需要转义句号/句点,因为这在 REGEX 中也有特殊含义:
Request\.ServerVariables\("(.*)"\)
然而,这是一场相当自由的比赛——为了确保你只通过最后的永久比赛,Request.ServerVariables("...")
你可能更喜欢:
Request\.ServerVariables\("([A-z_]+)"\)
A-z
这将使 only和 的引号之间找到匹配项_
。
一个可以让你更多地了解 Regex 的绝佳资源是正则表达式。它有一个实时文本编辑器,您可以在其中尝试不同的模式并查看其在您的示例中的匹配情况。它还有一个“样本”窗口,可为您提供有关各个部分功能的提示。
如果您想要更容易的查找/替换(这不是一个优雅的正则表达式),您可以进行更多的匹配组:
Find: (Request\.ServerVariables)\(("[A-z_]*")\)
Replace: $1[$2]