Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用正则表达式修改查询?_C#_Regex - Fatal编程技术网

C# 用正则表达式修改查询?

C# 用正则表达式修改查询?,c#,regex,C#,Regex,我想对上述查询进行如下修改,请注意[HELLO] string strModifiedQuery = "SELECT TAB1.Key FROM TAB1 IN 'C:\TEST\SAMPLE\HELLO.mdb' ORDER BY TAB1.Key;" 我尝试使用以下正则表达式;但是没有找到正确的答案 string strModifiedQuery = "SELECT TAB1.Key FROM [HELLO].TAB1 ORDER BY TAB1.Key;" 尝试一下下面的代码 st

我想对上述查询进行如下修改,请注意[HELLO]

string strModifiedQuery  = "SELECT TAB1.Key
FROM TAB1 IN 'C:\TEST\SAMPLE\HELLO.mdb'
ORDER BY TAB1.Key;"
我尝试使用以下正则表达式;但是没有找到正确的答案

string strModifiedQuery  = "SELECT TAB1.Key
FROM [HELLO].TAB1
ORDER BY TAB1.Key;"

尝试一下下面的代码

string pattern3 = @"(?i)'\w\:\\\w+\\\w+\\\w+.(mdb|accdb)'";
strModifiedQuery = Regex.Replace(strModifiedQuery, pattern3, @"[$0]");
(?i)
打开不区分大小写模式,DOTALL修饰符
(?s)
使正则表达式中的点也与换行符匹配。上面的正则表达式将匹配到行尾路径之前的两个单词,它还捕获到字符串
.mdb
之前的单词字符。在替换部件中,捕获的组被引用回以获得所需的结果

如果您不想显式地给字符串
TAB1
,请尝试下面的代码

string strModifiedQuery  = @"SELECT TAB1.Key
FROM TAB1 IN 'C:\TEST\SAMPLE\HELLO.mdb'
ORDER BY TAB1.Key;";
string result = Regex.Replace(strModifiedQuery, @"(?i)(?s)(.*?)\S+\s*\S+\s*'\w:\\\w+\\\w+\\(\w+)\.(?:mdb|accdb)'", "$1[$2].TAB1");
Console.WriteLine(result);
Console.ReadLine();

要进行的替换:

  (?=.*?\\)(?:.*?\s(.*?))\s*IN.*\\(.*?)\.(?:mdb|accdb).*?\n
请参见演示:


如果您不使用正则表达式(一旦您无法轻松处理它)来解决它会怎么样?
  (?=.*?\\)(?:.*?\s(.*?))\s*IN.*\\(.*?)\.(?:mdb|accdb).*?\n
  FROM [$2].$1\n