如何解决正则表达式-C#替换SQL通配符
我有一些可以与EF Core的EF.Function.Like
配合使用的输入。
所以我可能会收到类似%some_text%
这样的输入,其中通配符为%
和_
我需要考虑这一点,并将其提供给另一种不是SQL的过滤机制,其中只有*
通配符。
因此上述内容将变成*some*text*
。
但是,SQL可以像这样转义其通配符。 %some[_]te_t[%]
,应转换为*some_te*t%
如何使用C#替换正则表达式?
解决方法
您可以使用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%
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。