C# 用正则表达式修改查询?
我想对上述查询进行如下修改,请注意[HELLO]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
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