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

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

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

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

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 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