es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Subcadena de Python en una cadena cuando las partes de la subcadena no son consecutivas

Supongamos que este es mi string: http://www.test.com/1/page/
Y este es mi sub_string: www.test.com/2/page/

Ahora, si ejecuto

sub_string in string

El resultado será claramente False porque 2 no está en el string. Sin embargo, eso no es importante para mí. Lo único que me importa son las partes www.test.com y page. Solo quiero que se verifiquen esas partes y no me importa lo que haya entre ellas. ¿Cómo puedo realizar una búsqueda de esa manera para que los resultados sean True?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución es utilizar expresiones regulares (regex) para encontrar las partes deseadas de las cadenas. Aquí tienes un ejemplo de código en Python que logra esto:

    import re
    
    cadena = "http://www.test.com/1/page/"
    sub_cadena = "www.test.com/2/page/"
    
    # definir los patrones de regex para las partes que nos interesan
    patron_dominio = r'www\.test\.com'
    patron_pagina = r'page'
    
    # combinar los dos patrones con un comodín en medio
    patron_combinado = patron_dominio + r'.*' + patron_pagina
    
    # buscar el patrón en ambas cadenas
    coincidencia_cadena = re.search(patron_combinado, cadena)
    coincidencia_sub_cadena = re.search(patron_combinado, sub_cadena)
    
    # comprobar si ambas coincidencias no son None (es decir, se encontró algo)
    if coincidencia_cadena is not None and coincidencia_sub_cadena is not None:
        print("Ambas cadenas contienen las partes deseadas.")
    else:
        print("Al menos una cadena no contiene las partes deseadas.")
    

    En este código, primero definimos patrones de regex para las partes de dominio y página de las cadenas (patron_dominio y patron_pagina). Luego combinamos estos patrones en un único patrón patron_combinado que coincide con cualquier carácter entre los dos patrones (utilizando el comodín .*).

    Luego utilizamos la función re.search() para buscar este patrón tanto en la cadena como en la sub_cadena. Si ambas coincidencias no son None, podemos asumir que las partes deseadas de las cadenas están presentes en ambas cadenas.

    Ten en cuenta que esta solución asume que las partes de dominio y página siempre están en el mismo orden y separadas por cualquier número de caracteres. Si esta suposición no se cumple, es posible que el código no funcione correctamente.

Comments are closed.