Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

702
Vistas
Expresión regular + opciones en MongoDB (controlador C#)

Estoy trabajando con el controlador MongoDB para C # y estoy haciendo consultas para obtener de una colección una lista de elementos que coinciden con un campo.

Estoy usando el objeto BsonRegularExpression con la siguiente expresión:

 "/.*" + summonerName + "/"

Esto sería el equivalente de LIKE en Sql, pero el problema surge cuando quiero que no distinga entre mayúsculas y minúsculas. Para hacerlo, muchos sitios comentan que debe ser así:

 BsonRegularExpression expReg = new BsonRegularExpression("/.*" + summonerName + "/", "i");

Cuando coloco el parámetro de opciones así: "i" después de la expresión, simplemente no devuelve nada.

Dejo el código completo aquí:

 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; } }

¿Alguien ha experimentado el uso de expresiones regulares en el controlador mongo en C #? ¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Deberías definirlo como

 BsonRegularExpression expReg = w BsonRegularExpression(Regex.Escape(summonerName), "i")

El punto aquí es que la definición de expresiones regulares BsonRegularExpression no debe incluir delimitadores de expresiones regulares, / en su caso. La creación de instancias de expresiones regulares se realiza mediante la clase BsonRegularExpression , y los delimitadores de expresiones regulares son simplemente redundantes y se tratan aquí como literales / en el patrón. No hay coincidencias porque sus datos no tienen barras.

A continuación, no necesita .* aquí porque regex busca una coincidencia en cualquier parte del texto de entrada, no requiere una coincidencia de cadena completa (como es el caso con el operador LIKE ).

Tenga en cuenta Regex.Escape(summonerName) se usa solo en caso de que haya metacaracteres de expresiones regulares especiales en el nombre del summonerName , y si no se usa el método, la búsqueda puede fallar.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda