Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

1D
6H
36M
4S

Palabras, textos y vocabularios

5/24
Recursos

Aportes 18

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Definicion de metacaracter: Es una subcadena de texto que define un patron de busqueda muy basico. En el ejemplo tenemos:

re.search('es')

En donde nos trae todas las cadenas de texto que contengan en alguna parte la subcadena 鈥榚s鈥.

En las expresiones regulares podemos tener busquedas al inicio o al final.
Al inicio seria

re.search('es$')

Al final quedaria como:

re.search('^es')

El rango como su nombre lo indica es una expresion regular que nos da como resultado las cadenas que tengan a inicio o final lo contenido en dicho rango. Ejemplo:

re.search('^[ghi]')

Clausura:
Existen 2 tipos:

  • El * indica que se puede repetir 0 贸 mas veces.
  • El + indica que se puede repetir 1 贸 mas veces.

La funci贸n re.search(p, s) tiene dos par谩metros. En p introducimos la expresi贸n que queremos buscar y en s la 鈥渓ista鈥 en la que queremos buscar la expresi贸n p.

Tambi茅n se puede hacer uno de un filtro as铆:

import nltk
from re import match
import functools
import operator

nltk.download('cess_esp')
corpus = nltk.corpus.cess_esp.sents()
flatten = functools.reduce(operator.iconcat, corpus, [])

filtered_values = list(filter(lambda w: match('^[afc]', w), flatten))
filtered_values[:10]

Estructura de la funcion re.search()

Esta funcion determina si el patron de b煤squeda p est谩 contenido en la cadena s

re.search(p, s)

B煤squedas en cadenas de texto con meta caracteres b谩sicos

# Buscamos el 'es' en la cadena w en donde este
arr  = [w for w in flatten if re.search('es', w)]
print(arr[:5])
# Buscamos el 'es' en la cadena w al final 
arr = [w for w in flatten if re.search('es$', w)]
print(arr[:5])
# Buscamos el 'es' en la cadena w al principio
arr = [w for w in flatten if re.search('^es', w)]
print(arr[:5])

Patrones de b煤squeda usando el concepto de rango

Ejemplos:

  • Rango [a-z]: Determina que el car谩cter debe estar ubicado entra la a y la z
  • Rango [ghi]: Determina que el car谩cter que este en esta posici贸n puede ser cualquier letra entre la g, h e i.
# Buscamos que al principio de tu cadena de texto debe de ser entre la g, h y la i
arr = [w for w in flatten if re.search('^[ghi]', w)]
print(arr[:10])

Clausuras

<h3>Tipos:</h3>
  • El *: Esta clausura representa que se puede repetir 0 o m谩s veces.
  • El +: Esta clausura representa que s puede repetir 1 o m谩s veces.
# El patron de busqueda ser谩 que al principio aparezca no y que esa secuencia se puede repetir 0 o m谩s veces 
arr1 = [w for w in flatten if re.search('^(no)*', w)]
print(arr1[:20])

# El patron de busqueda ser谩 que la sub cadena de texto no debe de aparecer al menos una vez
arr2 = [w for w in flatten if re.search('^(no)+', w)]
print(arr2[:20])
  • Que es ?

    Esta funcion determmina el patron de busqueeda dee caracteres; p es la cadena a buscar y s es el arreglo de donde se sacara la informacion

    re.search(p,s)

  • Estructura

    1. La funci贸n re.search() en este caso buscara token con la cadena de caracteres. 鈥渆s鈥, en cualquier posici贸n del token
    arr = [w for w in flatten if re.search("es", w)]
    print(arr[:10])
    
    entrega
    
    ['estatal', 'jueves', 'empresa', 'centrales', 'francesa', 'japonesa', 'millones', 'millones', 'd贸lares', 'millones']
    
    1. La funci贸n re.search() en este caso las expresiones que terminen en estos caracteres entregados por par谩metros
    arr = [w for w in flatten if re.search("es$", w)]
    print(arr[:10])
    
    entrega
    
    ['jueves', 'centrales', 'millones', 'millones', 'd贸lares', 'millones', 'millones', 'd贸lares', 'es', 'militantes']
    
    1. La funci贸n re.search() en este caso las expresiones que comienzan en estos caracteres entregados por par谩metros
    arr = [w for w in flatten if re.search("^es", w)]
    print(arr[:10])
    
    entrega
    
    ['estatal', 'es', 'esta', 'esta', 'eso', 'es', 'especial', 'especialmente', 'este', 'estas']
    
  • Rango

    Con el rango podemos hacer un filtrado mayor, dato que tenemos varios caracteres en los que podemos buscar, el rango se escribe dentro de [聽聽]

    arr = [w for w in flatten if re.search("^[ghi]", w)]
    print(arr[:10])
    
    entrega
    
    ['grupo', 'hoy', 'gas', 'gas', 'intervendr谩', 'invertir', 'gas', 'hoy', 'insulto', 'intervenci贸n']
    
  • Clausuras

    Las clausuras nos ayudaran a delimitar la b煤squeda por caracteres

    *** repetirr 0 o mas veces**

    + repetir 1 o mas veces

    • con 0 repeticiones

      arr = [w for w in flatten if re.search("^(no)*", w)]
      print(arr[:1
      
      entrega
      
      ['El', 'grupo', 'estatal', 'Electricit茅_de_France', '-Fpa-', 'EDF', '-Fpt-', 'anunci贸', 'hoy', ',']
      
    • con 1 o mas repeticiones

      arr = [w for w in flatten if re.search("^(no)+", w)]
      print(arr[:10])
      
      entrega
      
      ['norte', 'no', 'no', 'noche', 'no', 'no', 'notificaci贸n', 'no', 'no', 'no']
      

No entiendo porque Francisco dice 鈥0 o mas veces鈥. Si es cero no hay mas veces.
Alguien tiene una explicaci贸n de porque utiliza esa expresi贸n.
Gracias

Este curso me gusta mucho es sobre python.
https://www.sololearn.com/learning/1073

Es FREE, en el ahi un modulo que es sobre expresiones regulares. Se los recomiendo.

Estructura de la funci贸n re.search()

Esta funci贸n determina si el patr贸n de la expresi贸n regular aplica en una cadena de texto, re.searhc(p, s)

arr = [word for word in flatten if re.search('es',word)]
print(arr[:7])

Podemos ver que todos los elementos tienen dentro el texto es.馃く Este es es un metacaracter que define un patr贸n de b煤squeda muy b谩sico. Podemos crear patr贸nes de busqueda mucho m谩s complejos.

  • El caracter $ sirve para reemplazar cualquier caracter.
  • ^ sirve para indicar que est谩 al inicio de la cadena de texto.
arr = [word for word in flatten if re.search('es$', word)]
print(arr[:5])

arr = [word for word in flatten if re.search('^es', word)]
print(arr[:5])

Ahora veremos que es el rango. La notaci贸n es [a-z], [ghi]. Cualquier letra en ese rango puede estar en dicho lugar

arr = [word for word in flatten if re.search('^[ghi]', word)]
print(arr[:7])

Por 煤ltimo, tenemos clausuras, y hay dos tipos:

  • *: Una cadena de texto se puede repetir 0 o m谩s veces.
  • +: La cadena se puede repetir 1 o m谩s veces.
arr = [word for word in flatten if re.search('^(no)+', word)]
print(arr[:10])

Muy buena clase, si puedes tomar el curso de expresiones regulares del profesor Beco estos dos cursos seran una combinaci贸n potente en tu stack

print([re.findall(r'\w*es', line) for line in flatten if re.search(r'es$', line)][:5])

print([re.findall(r'\w*es$', line) for line in flatten][:208])

Me pareci贸 raro el c贸digo del profe porque pidas el patr贸n que pidas siempre te da la palabra entera que contiene la cadena, pero con este c贸digo puedes comprender el patr贸n que pides y lo que se est谩 mostrando en pantalla, que es otro patr贸n.
La segunda funci贸n print() te ayudar谩 a comprender el comportamiento del objeto flatten que es un iterador. Adem谩s puedes intercambiar entre: search, findall indistintamente as铆 como los slices. Y por supuesto que los patrones y ver谩s su comportamiento y naturaleza.

Ya me voy dando idea para trabajar con mi propia fuente y crear base de datos con el arreglo

Clausuras en expresiones regulares

Hola:
Pueden poner los patrones de texto para insertarlos en Google Colab y as铆 poder practicar sin tener que escribirlos?. Me da un error cuando escribo las instrucciones

En alg煤n momento encontr茅 este simulador y me ayud贸 en el curso de Expresiones Regulares.

Buena explicaci贸n de expresiones regulares, lo b谩sico, pero necesario para poder entenderlas.

Recordando el curso Aut贸matas y Lenguajes Formales.