Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

829
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!