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

354
Vistas
C# Regex que coincide con dos números divididos por una cadena específica y rodeados de corchetes

Estoy buscando un patrón Regex de .NET que coincida con lo siguiente:

  • cadena comienza con el carácter [
  • seguido de un número entero o decimal
  • seguido de .. (carácter de espacio, punto, punto, carácter de espacio)
  • seguido de un número entero o decimal
  • seguido del último carácter de la cadena que es )

*- los números decimales tienen un separador decimal, el . personaje

*- los números enteros o el valor entero de los números decimales deben tener un máximo de 4 dígitos

*- los números decimales deben tener un máximo de 4 dígitos fraccionarios

*- los números pueden ser negativos

*- si un número es positivo entonces falta el signo +

*- no importa cuál de los dos números sea menor (el primer número puede ser mayor que el segundo, "[56 .. 55)" por ejemplo)

El patrón debe coincidir con lo siguiente:

 "[10 .. 15)" "[100 .. 15.2)" "[10.431 .. 15)" "[-10.3 .. -5)" "[-10.4 .. 5.12)" "[10.4312 .. -5.1232)"

También me gustaría obtener los 2 números como cadenas de la cadena en caso de que el patrón coincida:

obtener "10" y "15" de "[10 .. 15)"

obtenga "-10.4" y "5.12" de "[-10.4 .. 5.12)"

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

0

Puedes usar

 ^\[(-?\d{1,4}(?:\.\d{1,4})?) \.\. (-?\d{1,4}(?:\.\d{1,4})?)\)$

Vea la demostración de expresiones regulares . Detalles :

  • ^ - comienzo de la cadena
  • \[ - un [ carácter
  • (-?\d{1,4}(?:\.\d{1,4})?) - Grupo 1: un - opcional, uno a cuatro dígitos y luego una secuencia opcional de un . y de uno a cuatro dígitos
  • \.\. - una .. cadena
  • (-?\d{1,4}(?:\.\d{1,4})?) - Grupo 2: un - opcional, uno a cuatro dígitos y luego una secuencia opcional de un . y de uno a cuatro dígitos
  • \) - a ) carácter
  • $ - final de la cadena (use \z si necesita verificar el final de la cadena).

Vea la demostración de C# :

 var texts = new List<string> { "[10 .. 15)", "[100 .. 15.2)", "[10.431 .. 15)", "[-10.3 .. -5)", "[-10.4 .. 5.12)", "[10.4312 .. -5.1232)", "[12345.1234 .. 0)", "[1.23456 .. 0" }; var pattern = new Regex(@"^\[(-?\d{1,4}(?:\.\d{1,4})?) \.\. (-?\d{1,4}(?:\.\d{1,4})?)\)$"); foreach (var s in texts) { Console.WriteLine($"---- {s} ----"); var match = pattern.Match(s); if (match.Success) { Console.WriteLine($"Group 1: {match.Groups[1].Value}, Group 2: {match.Groups[2].Value}"); } else { Console.WriteLine($"No match found in '{s}'."); } }

Producción:

 ---- [10 .. 15) ---- Group 1: 10, Group 2: 15 ---- [100 .. 15.2) ---- Group 1: 100, Group 2: 15.2 ---- [10.431 .. 15) ---- Group 1: 10.431, Group 2: 15 ---- [-10.3 .. -5) ---- Group 1: -10.3, Group 2: -5 ---- [-10.4 .. 5.12) ---- Group 1: -10.4, Group 2: 5.12 ---- [10.4312 .. -5.1232) ---- Group 1: 10.4312, Group 2: -5.1232 ---- [12345.1234 .. 0) ---- No match found in '[12345.1234 .. 0)'. ---- [1.23456 .. 0 ---- No match found in '[1.23456 .. 0'.
over 4 years ago · Santiago Trujillo Denunciar

0

La siguiente expresión regular debería estar bien.

 ^\[-?\d+(?:\.\d+)? \.\. -?\d+(?:\.\d+)?\)$
 var pattern = @"^\[-?\d+(?:\.\d+)? \.\. -?\d+(?:\.\d+)?\)$"; var inputs = new[]{"[10 .. 15)", "[100 .. 15.2)", "[10.431 .. 15)", "[-10.3 .. -5)", "[-10.4 .. 5.12)", "[10.4312 .. -5.1232)", }; foreach (var input in inputs) { Console.WriteLine(input + " = " + Regex.IsMatch(input, pattern)); } // [10 .. 15) = True // [100 .. 15.2) = True // [10.431 .. 15) = True // [-10.3 .. -5) = True // [-10.4 .. 5.12) = True // [10.4312 .. -5.1232) = True

https://dotnetfiddle.net/LpswtI

over 4 years ago · Santiago Trujillo Denunciar

0

Esto funciona (ver este .Net Fiddle :

 using System; using System.Text.RegularExpressions; public class Program { public static void Main() { Match m = rx.Match("[123 .. -9876.5432]"); if (!m.Success ) { Console.WriteLine("No Match"); } else { Console.WriteLine(@"left: {0}", m.Groups[ "left" ] ); Console.WriteLine(@"right: {0}", m.Groups[ "right" ] ); } } private static readonly Regex rx = new Regex(@" ^ # anchor match at start-of-text [[] # a left square bracket followed by (?<left> # a named capturing group, containing a number, consisting of -?[0-9]{1,4} # - a mandatory integer portion followed by ([.][0-9]{1,4})? # - an optional fractional portion ) # the whole of which is followed by [ ][.][.][ ] # a separator (' .. '), followed by (?<right> # another named capturing group containing a number, consisting of -?[0-9]{1,4} # - a mandatory integer portion followed by ([.][0-9]{1,4})? # - an optional fractional portion ) # the whole of which is followed by \] # a right square bracket, followed by $ # end-of-text ", RegexOptions.IgnorePatternWhitespace|RegexOptions.ExplicitCapture ); }
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