结合使用REGEX和字符串插值 用于测试的正则表达式示例示例2

问题描述

我目前面临将regex查询传递给EF Core >=3.1中的FromsqlRaw方法的挑战。

FromsqlRaw将查询视为字符串插值。我希望它忽略这一点并按原样接受查询

用于测试的正则表达式示例

^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$

示例2

this.context.Mudal.FromsqlRaw(@"SELECT * FROM Mudal WHERE replace(BillRefNumber,' ','') regexp '^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$';").ToList()

解决方法

您可以尝试使用参数化来传递正则表达式。请尝试以下操作:

string regexpression = @"^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$";
var mylist = this.context.Mudal
   .FromSqlRaw(@"SELECT * FROM Mudal WHERE replace(BillRefNumber,' ','') regexp {0};",regexpression)
   .ToList();
,

我找到了一个理想的答案,我要做的就是将这个{1}更改为train_on_batch。这样可以避免字符串插值。