如何使用多种模式处理Regex

本文关键字:处理 Regex 模式 何使用 | 更新日期: 2023-09-27 18:19:30

我有一个要求,我需要从access db读取一个查询,并修改该查询以将查询中的所有关键字替换为SQL可执行查询。。例如:假设有一个查询"从表1中选择密钥"

这里的"key"是一个保留关键字。它必须修改为"从表1中选择[key]"(这将在sql中工作)。

查询可能有多个关键字。。所以我有一个正则表达式如下。

string pattern = "Key|IN|ON|VIEW]";
Regex rgx = new Regex(pattern);

我有下面的代码。。检查图案。。

string pattern = "Key|IN|ON|VIEW]";
Regex rgx = new Regex(pattern);  
string strModifiedQuery = string.Empty;
strModifiedQuery = strQueryText;
foreach (Match m in rgx.Matches(pattern))
{
    Console.WriteLine(m.Value);
    if (m.Value == "Key")
    {
        strModifiedQuery = rgx.Replace(strModifiedQuery, "[Key]");
    }
    if (m.Value == "IN")
    {
        strModifiedQuery = rgx.Replace(strModifiedQuery, "[IN]");
    }
    if (m.Value == "ON")
    {
        strModifiedQuery = rgx.Replace(strModifiedQuery, "[IN]");
    }

在c#中有没有更好的方法来用合适的值替换匹配的模式?

如何使用多种模式处理Regex

var pattern = @"(?i)Key|IN|ON|VIEW";
var subject = "Select key from table1";
var result = Regex.Replace(subject, pattern, @"[$0]");

生成

Select [key] from table1

(?i)打开忽略大小写并替换模式[$0]替换由括号包围的匹配的内容。