使用正则表达式在记事本++中查找和替换

使用正则表达式在记事本++中查找和替换

我需要将一些旧的 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]

点击此处

相关内容