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

126
Vistas
¿Por qué verificar esta cadena con Regex.IsMatch hace que la CPU alcance el 100 %?

Cuando se usa Regex.IsMatch (C#, .Net 4.5) en una cadena específica, la CPU alcanza el 100 %.

Cuerda:

 https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792/?type=1&permPage=1

Patrón:

 ^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$

Código completo:

 Regex.IsMatch("https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792/?type=1&permPage=1", @"^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$");

Descubrí que redactar la URL evita este problema. URL redactada:

 https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792

Pero todavía muy interesado en entender qué causa esto.

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

0

Como señaló nu11p01n73R, tiene muchos retrocesos con su expresión regular. Esto se debe a que partes de su expresión pueden coincidir con lo mismo, lo que le da al motor muchas opciones que tiene que probar antes de encontrar un resultado.

Puede evitar esto cambiando la expresión regular para hacer que las secciones individuales sean más específicas. En su caso, la causa es que quería hacer coincidir un punto real pero usó el carácter de coincidencia total . en cambio. Deberías escapar de eso a \. .

Esto ya debería reducir mucho la necesidad de retroceso y hacerlo rápido:

 ^http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=])?$

Y si realmente desea hacer coincidir la cadena original, debe agregar un cuantificador a la clase de caracteres al final:

 ^http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]+)?$ ↑
over 4 years ago · Santiago Trujillo Denunciar

0

Le sugiero que consulte el sitio web http://regexr.com/ para probar su expresión regular.

La versión corregida de su expresión regular es esta:

 ^(https?://(?:[\w]+\.?[\w]+)+[\w]/?)([\w\./]+)(\?[\w-=&%]+)?$

También tiene 3 grupos:

  1. group1=URL principal (por ejemplo: facebook.com)
  2. group2=Sub URL (por ejemplo: /CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792/
  3. group3=Variables (por ejemplo: ?type=1&permPage=1)

También recuerde que para verificar el carácter real del punto (.) en su expresión regular, debe usar \. no .

over 4 years ago · Santiago Trujillo Denunciar

0

Su expresión regular sufre por catastrophic backtracking . Simplemente puede usar

 ^http(s)?://([\w.-])+(/[\w ./?%&=-]+)*$

Ver demostración.

https://regex101.com/r/cK4iV0/15

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