Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

828
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda