正则表达式-C#替换SQL通配符

正则表达式-C#替换SQL通配符,c#,regex,tsql,replace,wildcard,C#,Regex,Tsql,Replace,Wildcard,我有一些与EF Core的EF.函数一起工作的输入,比如 因此,我可能会收到这样的输入%some_text%,其中通配符是%和 我需要把它交给另一个不是SQL的过滤机制,这里只有*通配符 因此,上面的内容将变成*一些*文本* 但是,SQL可以像这样转义其通配符%some[]te\u t[%],应转换为*some\u te*t% 如何使用C#使用Regex进行替换?您可以使用2个捕获组,并检查组2是否有值。如果不是,则返回组1的值,该值捕获方括号之间的值 由于支架本身是匹配的,因此它们不是更换件的

我有一些与EF Core的
EF.函数一起工作的输入,比如

因此,我可能会收到这样的输入
%some_text%
,其中通配符是
%

我需要把它交给另一个不是SQL的过滤机制,这里只有
*
通配符

因此,上面的内容将变成
*一些*文本*

但是,SQL可以像这样转义其通配符
%some[]te\u t[%]
,应转换为
*some\u te*t%


如何使用C#使用Regex进行替换?

您可以使用2个捕获组,并检查组2是否有值。如果不是,则返回组1的值,该值捕获方括号之间的值

由于支架本身是匹配的,因此它们不是更换件的一部分

\[([%_])\]|([%_])
|

示例代码

string[] strings = { 
    "%some_text%",
    "%some[_]te_t[%]"
    };

foreach (String s in strings) {
    var result = Regex.Replace(
        s, 
        @"\[([%_])\]|([%_])", match =>
        match.Groups[2].Success ? "*" : match.Groups[1].Value
    );
    Console.WriteLine(result);
}
输出

*some*text*
*some_te*t%

我补充了一个可能会有帮助的答案,但是你能补充一下你尝试过的问题吗?我想我读了这个问题,看到了所有的括号和星号,我认为那里有一个模式:-)