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.

Utilizando RegEx para hacer coincidir todas las subcadenas excepto aquellas que comienzan con un carácter específico.

Tiene la siguiente cadena:

cadena = ‘”General Slocum” 15 de junio de 1904. East River _ factor humano %_ %& 4′

Q: Usando RegEx, extraiga toda la cadena excepto las subcadenas que comiencen con S.

Código para encontrar la subcadena que comienza con S:

print(re.findall(‘S[\w]+’, cadena)

Salida: [‘Slocum’]

La mejor solución que se me ocurrió, usando el método sub:

print(re.sub(‘S\w+’, ”, cadena))

Salida: ‘”General ” 15 de junio de 1904. East River. _ factor humano %_ %& 4′

=====================================================================

Problema: No puedo escribir una expresión regular que reconozca todas las subcadenas que comienzan con el carácter S específico, y luego devuelva todas menos estas subcadenas.

Ejemplo:

print(re.findall(‘[^ S\w+][\w\%\d\&.]+’, cadena))

Salida: [‘”General’, ‘%__’, ‘%&’]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer toda la cadena excepto las subcadenas que comienzan con S, se puede utilizar un negative lookahead para excluir cualquier coincidencia que comience con S. Aquí está el patrón regex que se puede utilizar:

    (?i)\b(?!S)[\w%&.]+

    Desglosando:
    (?i) establece el patrón para coincidir sin tener en cuenta mayúsculas o minúsculas
    \b coincide con un límite de palabra para asegurarse de que coincidimos con palabras completas
    (?!S) es un negative lookahead que excluye coincidencias que comienzan con S
    [\w%&.]+ coincide con cualquier combinación de caracteres de palabras, porcentajes, ampersands y puntos

    Aquí hay un ejemplo de cómo usarlo:

    “`import re

    cadena = ‘”General Slocum” 15 June 1904 East River _ human factor _%__ %& 4′

    patrón = r'(?i)\b(?!S)[\w%&.]+’

    resultado = re.findall(patrón, cadena)

    print(resultado)“`

    Resultado:
    ['"General"', '15', 'June', '1904', 'East', 'River', '_', 'human', 'factor', '_%__', '%&', '4']

Comments are closed.