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

246
Views
Cadena de duración coincidente de hora-minuto-segundo (hms)

Quiero hacer coincidir los dígitos antes de h , m y s en sus respectivos grupos de captura. Quiero hacer coincidir los 3 grupos si es posible. Si falta uno o dos de los otros grupos, haga coincidir los últimos grupos.

Como se ve en la imagen a continuación y en este regex101 , actualmente tengo una expresión regular de
/(\d+)(?=h)|(\d+)(?=m)|(\d+)(?=s)/g , que coincide, para mi cadena de prueba, 12 coincidencias con 1 grupo en cada coincidencia.

expresión regular y cadena

Pero I want 7 partidos. Donde el primer partido contiene 3 grupos, el 2º al 4º partido contiene 2 grupos cada uno y los últimos 3 partidos contienen 1 grupo cada uno.

Entonces I want:

  1. Partido 1: 11h22m33s
    1. Grupo 1: 11
    2. Grupo 2: 22
    3. Grupo 3: 33
  2. Partido 2: 11h22m
    1. Grupo 1: 11
    2. Grupo 2: 22
  3. Partido 3: 11h33s
    1. Grupo 1: 11
    2. Grupo 2: 33
  4. Partido 4: 22m33s
    1. Grupo 1: 22
    2. Grupo 2: 33
  5. Partido 5: 11h
    1. Grupo 1: 11
  6. Partido 6: 22m
    1. Grupo 1: 22
  7. Partido 7: 33s
    1. Grupo 1: 33

Editar

¡Las cadenas de prueba pueden estar contenidas dentro de otras cadenas! Ej. 08:00 + 11h . Ver https://regex101.com/r/RWA9Oy/1

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si necesita asegurarse de que toda la cadena coincida con el patrón, puede usar

 ^(?!$)(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$

Vea la demostración de expresiones regulares .

Si necesita extraer estas cadenas de los textos más largos, puede usar

 \b(?=\w)(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?\b(?!\w)

Vea esta demostración de expresiones regulares .

Detalles :

  • ^ - comienzo de la cadena
  • (?!$) - la cadena no puede terminar al principio (=no puede estar vacía)
  • \b(?=\w) - un límite de palabra donde el char inmediatamente a la derecha es una palabra char (=es una letra, dígito o _ )
  • (?:(\d+)h)? - un grupo opcional que no captura que coincida con uno o más dígitos (capturándolos en el Grupo 1) y una letra h
  • (?:(\d+)m)? - un grupo opcional que no captura que coincida con uno o más dígitos (capturándolos en el Grupo 2) y una letra m
  • (?:(\d+)s)? - un grupo opcional que no captura que coincida con uno o más dígitos (capturándolos en el Grupo 3) y una letra s
  • $ - final de la cadena
  • \b(?!\w) - un límite de palabra donde el carácter inmediatamente a la derecha NO es un carácter de palabra o al final de la cadena.

En caso de que desee permitir cualquier cantidad de espacio en blanco entre los componentes, puede agregar \s* :

 ^(?!\s*$)\s*(?:(\d+)\s*h\s*)?(?:(\d+)\s*m\s*)?(?:(\d+)\s*s)?\s*$

O, para coincidencias parciales

 \b(?=\w)(?:(\d+)\s*h\s*)?(?:(\d+)\s*m\s*)?(?:(\d+)\s*s)?\b(?!\w)

Vea esta demostración de expresiones regulares y otra demostración de expresiones regulares .

about 4 years ago · Juan Pablo Isaza 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!