# Cargando paquetes
rm(list = ls())
cat("\014")
graphics.off()
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
options(scipen = 999)

library(pacman)
p_load(tidyverse,datos,stringr)

14.2.9.1 Ejercicios

1. Crea una expresión regular que encuentre todas las palabras que:

1.1 Empecé con una voz

palabras <- datos::palabras
str_subset(palabras, "^[aáeéiíoóuúü]")
##   [1] "a"              "abril"          "acción"         "acciones"      
##   [5] "acerca"         "actitud"        "actividad"      "actividades"   
##   [9] "acto"           "actual"         "acuerdo"        "adelante"      
##  [13] "además"         "administración" "afirmó"         "agua"          
##  [17] "ahí"            "ahora"          "aire"           "al"            
##  [21] "algo"           "alguien"        "algún"          "alguna"        
##  [25] "algunas"        "algunos"        "allá"           "allí"          
##  [29] "alrededor"      "alta"           "alto"           "ambiente"      
##  [33] "ambos"          "américa"        "amigo"          "amigos"        
##  [37] "amor"           "análisis"       "animales"       "ante"          
##  [41] "anterior"       "antes"          "antonio"        "año"           
##  [45] "años"           "aparece"        "apenas"         "apoyo"         
##  [49] "aquel"          "aquella"        "aquellas"       "aquellos"      
##  [53] "aquí"           "área"           "argentina"      "armas"         
##  [57] "arriba"         "arte"           "artículo"       "así"           
##  [61] "asimismo"       "asociación"     "aspecto"        "aspectos"      
##  [65] "asunto"         "atención"       "atrás"          "aumento"       
##  [69] "aun"            "aún"            "aunque"         "autor"         
##  [73] "autoridades"    "ayer"           "ayuda"          "e"             
##  [77] "economía"       "económica"      "económico"      "edad"          
##  [81] "educación"      "efecto"         "efectos"        "ejemplo"       
##  [85] "ejército"       "el"             "él"             "elecciones"    
##  [89] "electoral"      "elementos"      "ella"           "ellas"         
##  [93] "ello"           "ellos"          "embargo"        "empresa"       
##  [97] "empresas"       "en"             "encima"         "encontrar"     
## [101] "encuentra"      "encuentran"     "encuentro"      "energía"       
## [105] "enero"          "enfermedad"     "entonces"       "entrada"       
## [109] "entrar"         "entre"          "época"          "equipo"        
## [113] "era"            "eran"           "es"             "esa"           
## [117] "esas"           "escuela"        "ese"            "esfuerzo"      
## [121] "eso"            "esos"           "espacio"        "españa"        
## [125] "español"        "española"       "españoles"      "especial"      
## [129] "especialmente"  "especie"        "espera"         "esta"          
## [133] "está"           "ésta"           "estaba"         "estaban"       
## [137] "estado"         "estados"        "estamos"        "están"         
## [141] "estar"          "estas"          "este"           "éste"          
## [145] "estilo"         "esto"           "estos"          "estoy"         
## [149] "estructura"     "estudio"        "estudios"       "estuvo"        
## [153] "etapa"          "etc"            "europa"         "europea"       
## [157] "evitar"         "ex"             "existe"         "existen"       
## [161] "existencia"     "éxito"          "experiencia"    "explicó"       
## [165] "expresión"      "exterior"       "i"              "iba"           
## [169] "idea"           "ideas"          "iglesia"        "igual"         
## [173] "ii"             "imagen"         "imágenes"       "importancia"   
## [177] "importante"     "importantes"    "imposible"      "incluso"       
## [181] "industria"      "información"    "informe"        "instituciones" 
## [185] "instituto"      "interés"        "intereses"      "interior"      
## [189] "internacional"  "investigación"  "ir"             "izquierda"     
## [193] "o"              "objetivo"       "objeto"         "obra"          
## [197] "obras"          "obstante"       "ocasión"        "ocasiones"     
## [201] "ocho"           "octubre"        "oficial"        "ojos"          
## [205] "operación"      "opinión"        "oposición"      "orden"         
## [209] "organización"   "origen"         "oro"            "otra"          
## [213] "otras"          "otro"           "otros"          "u"             
## [217] "última"         "último"         "últimos"        "un"            
## [221] "una"            "unas"           "única"          "único"         
## [225] "unidad"         "unidos"         "unión"          "universidad"   
## [229] "uno"            "unos"           "uso"            "usted"

1.2 Solo contienen consonantes. (Pista: piensa en cómo buscar coincidencias para “no”-vocales.)

palabras <- datos::palabras

str_view(palabras, "^[^aáeéiíoóuúü]+$", match = TRUE)
##  [76] │ <b>
##  [93] │ <c>
## [194] │ <d>
## [378] │ <g>
## [461] │ <j>
## [509] │ <m>
## [590] │ <n>
## [646] │ <p>
## [718] │ <pp>
## [785] │ <r>
## [814] │ <s>
## [996] │ <y>

1.3 Terminen en ón, pero no en ión.

palabras <- datos::palabras

str_view(palabras, "[^i]ón$", match = TRUE)
## [168] │ cora<zón>
## [788] │ ra<zón>

1.4 Termina con ndo o ado.

palabras <- datos::palabras

str_view(palabras, "(n|a)do", match = TRUE)
## [181] │ cua<ndo>
## [196] │ d<ado>
## [214] │ demasi<ado>
## [317] │ est<ado>
## [318] │ est<ado>s
## [353] │ ferna<ndo>
## [360] │ fo<ndo>
## [386] │ gr<ado>
## [407] │ hacie<ndo>
## [477] │ l<ado>
## [493] │ llam<ado>
## [495] │ lleg<ado>
## [546] │ merc<ado>
## [587] │ mu<ndo>
## [669] │ pas<ado>
## [805] │ result<ado>
## [806] │ result<ado>s
## [836] │ segu<ndo>
## [858] │ sie<ndo>
## [935] │ trabaj<ado>res

2. ¿Siempre a una “q” la sigue una “u”?

“No necesariamente. Si revisamos todas las palabras en el conjunto de datos, encontramos que la mayoría de las palabras que contienen una ‘q’ están seguidas de una ‘u’. Sin embargo, existen excepciones, como ‘qüestió’ en catalán, ‘qi’ en pinyin chino, o palabras de origen extranjero como ‘Qatar’ o ‘Iraq’ que no siguen esta regla ortográfica del español. Por lo tanto, aunque es una convención común en el idioma español, no siempre a una ‘q’ le sigue una ‘u’ en todas las palabras.”

palabras <- datos::palabras

str_subset(palabras, "q.") 
##  [1] "aquel"     "aquella"   "aquellas"  "aquellos"  "aquí"      "aunque"   
##  [7] "cualquier" "equipo"    "izquierda" "pequeña"   "pequeño"   "porque"   
## [13] "que"       "qué"       "queda"     "quedó"     "quería"    "quien"    
## [19] "quién"     "quienes"   "quiere"    "quiero"    "quizá"     "siquiera"
str_subset(palabras, "q[^u]")
## character(0)

3. Escribe una expresión regular que permita buscar un verbo que haya sido escrito usando voseo en segunda persona plural(por ejemplo, queréis en vez de quieren ).

# Definimos un vector con algunos verbos en segunda persona plural usando voseo
voseo_segunda_persona <- c("habláis", "vivís", "coméis", "bebéis", "miráis")
 
# Buscamos verbos que terminan en "ís" usando voseo
str_view(voseo_segunda_persona, "ís$", match = TRUE)
## [2] │ viv<ís>

4. Crea una expresión regular que coincide con la forma en que habitualmente se escriben los números de teléfono en tu país

# Definimos el vector de números de teléfono en formato peruano
telefonos_peru <- c("+51 912 887 904", "+51912887904", "+51 912887904")

# Buscamos el patrón de números de teléfono en el formato especificado para Perú
str_view(telefonos_peru, "\\+51 \\d{3} \\d{3} \\d{3}")
## [1] │ <+51 912 887 904>

5. En inglés existe una regla que dice que la letra i va siempre antes de la e, excepto cuando está después de una c”. Verifica empíricamente esta regla utilizando las palabras contenidas en stringr::words.

words <- stringr::words

str_subset(words, "cie")
## [1] "science" "society"
str_subset(words, "[^c]ei")
## [1] "weigh"
str_subset(words, "[^c]ie|cei")
##  [1] "achieve"    "believe"    "brief"      "client"     "die"       
##  [6] "experience" "field"      "friend"     "lie"        "piece"     
## [11] "quiet"      "receive"    "tie"        "view"