La expresión regular (regex) está diseñada para extraer la información requerida de cualquier texto que se base en patrones. También se utilizan ampliamente para manipular textos basados en patrones, lo que conduce al preprocesamiento de texto y son muy útiles para implementar habilidades digitales como el procesamiento del lenguaje natural (NLP) .
Este artículo demuestra cómo usar expresiones regulares para sustituir patrones al proporcionar múltiples ejemplos donde cada ejemplo es un escenario único en sí mismo. Es muy necesario comprender el re.sub()
método del re
módulo (expresión regular) para comprender las soluciones dadas.
El re.sub()
método realiza una búsqueda global y un reemplazo global en la string dada. Se utiliza para sustituir un patrón específico en la string. Hay en total 5 argumentos de esta función.
Sintaxis: re.sub(patrón, repl, string, cuenta=0, banderas=0)
Parámetros:
patrón: el patrón que se buscará y sustituirá
repl: la string con la que se reemplazará el patrón
string: el nombre de la variable en la que se almacena el patrón
cuenta: número de caracteres hasta los que se realizará la sustitución
banderas: se utiliza para modificar el significado del patrón regex
count
yflags
son argumentos opcionales.
Ejemplo 1: Sustitución de un patrón de texto específico
En este ejemplo, se buscará y sustituirá un patrón de texto dado en una string. La idea es usar la forma muy normal del re.sub()
método con solo los primeros 3 argumentos.
A continuación se muestra la implementación.
# Python implementation of substituting a # specific text pattern in a string using regex # importing regex module import re # Function to perform # operations on the strings def substitutor(): # a string variable sentence1 = "It is raining outside." # replacing text 'raining' in the string # variable sentence1 with 'sunny' thus # passing first parameter as raining # second as sunny, third as the # variable name in which string is stored # and printing the modified string print(re.sub(r"raining", "sunny", sentence1)) # a string variable sentence2 = "Thank you very very much." # replacing text 'very' in the string # variable sentence2 with 'so' thus # passing parameters at their # appropriate positions and printing # the modified string print(re.sub(r"very", "so", sentence2)) # Driver Code: substitutor()
It is sunny outside. Thank you so so much.
No importa cuántas veces esté presente el patrón requerido en la string, la
re.sub()
función los reemplaza a todos con el patrón dado. Es por eso que ambos ‘muy’ se reemplazan por ‘tan’ en el ejemplo anterior.
Ejemplo 2: Sustitución de un juego de caracteres con un carácter específico
La tarea es reemplazar un juego de caracteres con un carácter dado. Un juego de caracteres significa un rango de caracteres. En el re.sub()
método, un conjunto de caracteres se escribe dentro de [ ] (corchetes).
En este ejemplo, el conjunto de caracteres en minúsculas, es decir, [az], será reemplazado por el dígito 0. A continuación se muestra la implementación.
# Python implementation of substituting # a character set with a specific character # importing regex module import re # Function to perform # operations on the strings def substitutor(): # a string variable sentence = "22 April is celebrated as Earth Day." # replacing every lower case characters # in the variable sentence with 0 and # printing the modified string print(re.sub(r"[a-z]", "0", sentence)) # Driver Code: substitutor()
22 A0000 00 0000000000 00 E0000 D00.
Si es necesario sustituir el conjunto de caracteres en mayúsculas y minúsculas, debemos introducir el conjunto de caracteres en mayúsculas de esta manera: [a-zA-Z] o la forma efectiva de hacerlo es usando banderas.
Ejemplo 3: sustitución de un juego de caracteres que no distingue entre mayúsculas y minúsculas por un carácter específico
En este ejemplo, tanto los caracteres en minúsculas como en mayúsculas se reemplazarán por el carácter dado. Con el uso de banderas , esta tarea se puede realizar de forma muy sencilla.
La re.I
bandera significa re. IGNORAR CASO . Introduciendo este indicador en el re.sub()
método y mencionando cualquier conjunto de caracteres, es decir, minúsculas o mayúsculas, se puede completar la tarea.
A continuación se muestra la implementación.
# Python implementation of case-insensitive substitution # of a character set with a specific character # importing regex module import re # Function to perform # operations on the strings def substitutor(): # a string variable sentence = "22 April is celebrated as Earth Day." # replacing both lowercase and # uppercase characters with 0 in # the variable sentence by using # flag and printing the modified string print(re.sub(r"[a-z]", "0", sentence, flags = re.I)) # Driver Code: substitutor()
22 00000 00 0000000000 00 00000 000.
Ejemplo 4: Realice la sustitución hasta una cierta cantidad de caracteres
En este ejemplo, la sustitución será hasta una cantidad específica de caracteres y no en toda la string. Para realizar este tipo de sustitución el re.sub()
método tiene un argumento count
.
Al proporcionar un valor numérico a este argumento, se puede controlar el número de caracteres en los que se producirá la sustitución. A continuación se muestra la implementación.
# Python implementation to perform substitution # up to a certain number of characters # importing regex module import re # Function to perform # operations on the strings def substitutor(): # a string variable sentence = "Follow your Passion." # case-insensitive substitution # on variable sentence upto # eight characters and printing # the modified string print(re.sub(r"[a-z]", "0", sentence, 8, flags = re.I)) # Driver Code: substitutor()
000000 00ur Passion.
Ejemplo 5: Sustitución usando clases de caracteres abreviados y preprocesamiento de texto
El módulo Regex proporciona muchas clases de caracteres abreviados para aquellos conjuntos de caracteres que son muy comunes durante el preprocesamiento de texto. El uso de la clase de caracteres abreviados da como resultado la escritura de código eficiente y reduce la necesidad de recordar el rango de cada conjunto de caracteres.
Para obtener una explicación detallada de la clase de caracteres abreviados y cómo escribir una expresión regular en python para el preprocesamiento de texto, haga clic aquí . Las siguientes son algunas de las clases de caracteres abreviados comúnmente utilizados:
\w: coincide con caracteres alfanuméricos
\W: coincide con caracteres no alfanuméricos como @, #, ‘, +, %, –
\d: coincide con caracteres de dígitos
\s: coincide con caracteres de espacio en blancoSignificado de alguna sintaxis:
agregar un símbolo más (+) después de una clase o conjunto de caracteres: repetición de la clase o conjunto de caracteres anterior al menos 1 o más veces.Agregar un símbolo de asterisco (*) después de una clase o conjunto de caracteres: repetición de la clase o conjunto de caracteres anterior al menos 0 o más veces.
agregar un símbolo de intercalación (^) antes de una clase o conjunto de caracteres: la posición de coincidencia se determina para esa clase o conjunto de caracteres al comienzo de la string.
agregar un símbolo de dólar ($) después de una clase o conjunto de caracteres: la posición coincidente se determina para esa clase o conjunto de caracteres al final de la string.
Este ejemplo demuestra el uso de las clases de caracteres abreviados mencionadas para la sustitución y el preprocesamiento de texto para obtener strings limpias y sin errores. A continuación se muestra la implementación.
# Python implementation of Substitution using # shorthand character class and preprocessing of text # importing regex module import re # Function to perform # operations on the strings def substitutor(): # list of strings S = ["2020 Olympic games have @# been cancelled", "Dr Vikram Sarabhai was +%--the ISRO’s first chairman", "Dr Abdul Kalam, the father of India's missile programme"] # loop to iterate every element of list for i in range(len(S)): # replacing every non-word character with a white space S[i] = re.sub(r"\W", " ", S[i]) # replacing every digit character with a white space S[i] = re.sub(r"\d", " ", S[i]) # replacing one or more white space with a single white space S[i] = re.sub(r"\s+", " ", S[i]) # replacing alphabetic characters which have one or more # white space before and after them with a white space S[i] = re.sub(r"\s+[a-z]\s+", " ", S[i], flags = re.I) # substituting one or more white space which is at # beginning of the string with an empty string S[i] = re.sub(r"^\s+", "", S[i]) # substituting one or more white space which is at # end of the string with an empty string S[i] = re.sub(r"\s+$", "", S[i]) # loop to iterate every element of list for i in range(len(S)): # printing each modified string print(S[i]) # Driver Code: substitutor()
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme
Publicación traducida automáticamente
Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA