gpt4 book ai didi

c# - MongoDB 中的正则表达式 + 选项(C# 驱动程序)

转载 作者:行者123 更新时间:2023-12-04 14:09:24 25 4
gpt4 key购买 nike

我正在使用 C# 的 MongoDB 驱动程序,我正在查询以从集合中获取与字段匹配的项目列表。
我正在使用带有以下表达式的 BsonRegularExpression 对象:

"/.*" + summonerName + "/"
这相当于 Sql 中的 LIKE,但是当我希望它不区分大小写时问题就来了。
为此,许多网站评论说它必须是这样的:
BsonRegularExpression expReg = new BsonRegularExpression("/.*" + summonerName + "/", "i");
当我把这样的选项参数放在表达式后面时:“i”,它只是不返回任何东西。
我把整个代码留在这里:
public static List<Summoner> GetSummonerByName(String summonerName)
{
try
{
var database = dbClient.GetDatabase(databaseName);
var collection = database.GetCollection<Summoner>(collectionSummoner);

String nombreRegex = "";
var nombreChar = summonerName.ToCharArray();
foreach(Char caracter in nombreChar)
{
nombreRegex += "*";
nombreRegex += caracter;
}

//var filter = Builders<Summoner>.Filter.Regex(u => u.name, new BsonRegularExpression("/.*C*o*r*b*a*n/"));
BsonRegularExpression expReg = new BsonRegularExpression("/.*" + summonerName + "/");
var filter = Builders<Summoner>.Filter.Regex(u => u.name, expReg);

var resultado = collection.Find(filter).ToList();

if(resultado.Count() == 0)
{
InsertSummoner(RiotApiConnectorService.GetSummonerByName(summonerName));
GetSummonerByName(summonerName);
}

return resultado;
}
catch (Exception error)
{
return null;
}
}
有没有人在 C# 中的 mongo 驱动程序中使用正则表达式?
提前致谢!

最佳答案

你应该把它定义为

BsonRegularExpression expReg = w BsonRegularExpression(Regex.Escape(summonerName), "i")
这里的重点是 BsonRegularExpression正则表达式定义不应包含正则表达式分隔符, /在你的情况下。使用 BsonRegularExpression 执行正则表达式实例化类,并且正则表达式分隔符只是多余的,在这里被视为文字 /在图案中。没有匹配项,因为您的数据没有斜线。
接下来就不需要 .*这里因为正则表达式在输入文本的任何位置搜索匹配,它不需要完整的字符串匹配(与 LIKE 运算符的情况一样)。
备注 Regex.Escape(summonerName)仅在 summonerName 中存在特殊正则表达式元字符时才使用,如果不使用该方法,搜索可能会失败。

关于c# - MongoDB 中的正则表达式 + 选项(C# 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65618023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com