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

823
Vistas
Regex para hacer coincidir palabras entre guiones bajos después de la segunda aparición de guiones bajos

así que me gustaría obtener palabras entre guiones bajos después de la segunda aparición de guiones bajos

esta es mi cadena

ABC_BC_BE08_C1000004_0124

He ensamblado esta expresión

(?<=_)[^_]+

bueno, coincide con lo que necesito, pero solo omite la primera palabra ya que no hay un guión bajo antes. Me gustaría omitir ABC y BC y solo obtener las últimas tres cadenas, he intentado perder el tiempo pero estoy atascado y no puedo hacer que funcione. ¡Gracias!

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

0

Puede usar un enfoque sin expresiones regulares aquí con Split and Skip :

 var text = "ABC_BC_BE08_C1000004_0124"; var result = text.Split('_').Skip(2); foreach (var s in result) Console.WriteLine(s);

Producción:

 BE08 C1000004 0124

Vea la demostración de C# .

Con expresiones regulares, puede usar

 var result = Regex.Matches(text, @"(?<=^(?:[^_]*_){2,})[^_]+").Cast<Match>().Select(x => x.Value);

Vea la demostración de expresiones regulares y la demostración de C# . Las coincidencias de expresiones regulares

  • (?<=^(?:[^_]*_){2,}) - una mirada positiva hacia atrás que coincide con una ubicación que coincide con los siguientes patrones inmediatamente a la izquierda de la ubicación actual:
    • ^ - comienzo de la cadena
    • (?:[^_]*_){2,} - dos o más ( {2,} ) secuencias de cero o más caracteres que no sean _ ( [^_]* ) y luego un _ carácter
  • [^_]+ - uno o más caracteres que no sean _
over 4 years ago · Santiago Trujillo Denunciar

0

Usign .NET también hay una colección de capturas que puede usar con una expresión regular y un grupo de captura repetido.

 ^[^_]*_[^_]*(?:_([^_]+))+

El patrón coincide:

  • ^ Comienzo de cadena
  • [^_]*_[^_]* Coincide con cualquier carácter excepto _ , coincide con _ y de nuevo con cualquier carácter excepto _
  • (?: grupo de no captura
    • _([^_]+) Haga coincidir _ y capture 1 o más veces cualquier carácter excepto _ en el grupo 1
  • )+ Cierra el grupo de no captura y repite 1 o más veces

demostración de expresiones regulares de .NET | demostración de C#

Por ejemplo:

 var pattern = @"^[^_]*_[^_]*(?:_([^_]+))+"; var str = "ABC_BC_BE08_C1000004_0124"; var strings = Regex.Match(str, pattern).Groups[1].Captures.Select(c => c.Value); foreach (String s in strings) { Console.WriteLine(s); }

Producción

 BE08 C1000004 0124

ingrese la descripción de la imagen aquí

Si desea hacer coincidir solo los caracteres de palabra entre los guiones bajos, otra opción para un patrón podría ser usar una clase de carácter negado [^\W_] excluyendo el guión bajo de los caracteres de palabra entre:

 ^[^\W_]*_[^\W_]*(?:_([^\W_]+))+
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