string strModifiedQuery = "SELECT TAB1.Key
FROM TAB1 IN 'C:\TEST\SAMPLE\HELLO.mdb'
ORDER BY TAB1.Key;"
我想修改上面的查询,如下所示注意 [HELLO]
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]");
答案 0 :(得分:0)
试试下面的代码,
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();
(?i)
打开不区分大小写的模式,DOTALL修饰符(?s)
使正则表达式中的点也匹配换行符。上面的正则表达式将匹配路径之前的两个单词直到行结束,并且它还捕获字符串.mdb
之前的单词字符。在替换部分中,引用捕获的组以获得所需的结果。
如果您不想明确地设置字符串TAB1
,请尝试使用以下代码
string result = Regex.Replace(strModifiedQuery, @"(?i)(?s)(.*?(\S+)\.key.*?)\S+\s*\S+\s*'\w:\\\w+\\\w+\\(\w+)\.(?:mdb|accdb)'", "$1[$3].$2");
答案 1 :(得分:0)
(?=.*?\\)(?:.*?\s(.*?))\s*IN.*\\(.*?)\.(?:mdb|accdb).*?\n
要做的替换:
FROM [$2].$1\n
参见演示: