sql分组中的Regex替换
本文关键字:Regex 替换 sql | 更新日期: 2023-09-27 18:27:50
我想在sql分组条件中用字段的广播版本替换字段:
例如:
input: sum(count(andrei) + count(2) + sum(count3)
ouptput: sum(count(cast(andrei as int)) + count(cast(2 as int)) + sum(cast(count3 as int))
我的想法是用以下模式查找不包含"("或")"的文字:
Match m = Regex.Match(input, "''([^''('')]+'')");
然后用广播版本替换它们。
我不知道如何进行更换。
您可以使用以下模式和替换字符串。
图案:(?<='()([^()]+)(?='))
(?<='()
:查找匹配(但不使用)左括号的后面([^()]+)
:带负字符类的编号捕获组,用于匹配除左括号和右括号之外的任何内容。当它们出现在角色类中时,没有必要逃离它们(?='))
:检测右括号的前瞻
替换字符串:cast($1 as int)
,其中$1
表示第一个编号的捕获组
string input = "sum(count(andrei)) + count(2) + sum(count3)";
string pattern = @"(?<='()([^()]+)(?='))";
string replacement = "cast($1 as int)";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result);