# Problem 3

raw.data <-"555-1239Moe Szyslak(636) 555-0113Burns, C. Montgomery555-6542Rev. Timothy Lovejoy555 8904Ned Flanders636-555-3226Simpson, Homer5553642Dr. Julius Hibbert"

library(stringr)

name <- unlist(str_extract_all(raw.data, "[[:alpha:]., ]{2,}"))

name
## [1] "Moe Szyslak"          "Burns, C. Montgomery" "Rev. Timothy Lovejoy"
## [4] "Ned Flanders"         "Simpson, Homer"       "Dr. Julius Hibbert"
# Problem 3.1; FirstName LastName


fname_lname <- function (string)
{ 
str_replace( paste (rev(unlist (strsplit (str_replace(string, pattern = "^[[:alpha:]]*\\. ", replacement = ""), '\\, '))), collapse=" "),pattern=" [[:alpha:]]* ", replacement=" ")
}


name1<-sapply(name,fname_lname)

name1
##          Moe Szyslak Burns, C. Montgomery Rev. Timothy Lovejoy 
##        "Moe Szyslak"           "C. Burns"    "Timothy Lovejoy" 
##         Ned Flanders       Simpson, Homer   Dr. Julius Hibbert 
##       "Ned Flanders"      "Homer Simpson"     "Julius Hibbert"
# Problem 3.2; Check Title

log_title <- function (string)
{ 

  !is.na(str_extract(string, pattern = "^[[:alpha:]]*\\. "))
}


name2<-sapply(name, log_title)

name2
##          Moe Szyslak Burns, C. Montgomery Rev. Timothy Lovejoy 
##                FALSE                FALSE                 TRUE 
##         Ned Flanders       Simpson, Homer   Dr. Julius Hibbert 
##                FALSE                FALSE                 TRUE
# Problem 3.3; Check Second Name

log_sname <- function (string)
{ 

  !is.na(str_extract(string, pattern = "^\\w*[ ,][[:alpha:] ][[:alpha:].]*[ ]"))
}


name3<-sapply(name, log_sname)

name3
##          Moe Szyslak Burns, C. Montgomery Rev. Timothy Lovejoy 
##                FALSE                 TRUE                FALSE 
##         Ned Flanders       Simpson, Homer   Dr. Julius Hibbert 
##                FALSE                FALSE                FALSE
# exersise 4
# exersise 4.1 [0-9]+\\$ -0-9 matched 1+ times and "$"

test1<-"0$"

str_extract(test1, pattern = "[0-9]+\\$")
## [1] "0$"
# exersise 4.2 \\b[a-z]{1,4}\\b "b" any letter "a-z" one or 4 + "b"

test2<-"bcb"

str_extract(test2, pattern = "\\b[a-z]{1,4}\\b")
## [1] "bcb"
# exersise 4.3 .*?\\.txt$ any character + zero or any times +".txt" in the end

test3<-"file.txt"

str_extract(test3, pattern = ".*?\\.txt$")
## [1] "file.txt"
str_extract(test3, pattern = ".*\\.txt$") ## not 100% sure what is the difference
## [1] "file.txt"
# exersise 4.4 \\d{2}/\\d{2}/\\d{4} digit+digit+"/"+digit+digit+"/"+4 digits

test4<-"12/34/5678"

str_extract(test4, pattern = "\\d{2}/\\d{2}/\\d{4}")
## [1] "12/34/5678"
# exersise 4.5 <(.+?)>.+?</\\1> "<"+"+"+">"+any+matched 1+times+"<"+"/"+"\\"+"1"+">"


test5<-"<.>b</.>"
 
str_extract(test5, pattern = "<(.+?)>.+?</\\1>")
## [1] "<.>b</.>"
# exersise 9; CONGRATULATIONS YOU ARE A SUPER NERD

mystr<-"clcopCow1zmstc0d87wnkig7OvdicpNuggvhryn92Gjuwczi8hqrfpRxs5Aj5dwpn0TanwoUwisdij7Lj8kpf03AT5Idr3coc0bt7yczjatOaootj55t3Nj3ne6c4Sfek.r1w1YwwojigOd6vrfUrbz2.2bkAnbhzgv4R9i05zEcrop.wAgnb.SqoU65fPa1otfb7wEm24k6t3sR9zqe5fy89n6Nd5t9kc4fE905gmc4Rgxo5nhDk!gr"

myoutput<-str_extract_all(mystr, pattern = "[[:upper:]]")

myoutput
## [[1]]
##  [1] "C" "O" "N" "G" "R" "A" "T" "U" "L" "A" "T" "I" "O" "N" "S" "Y" "O"
## [18] "U" "A" "R" "E" "A" "S" "U" "P" "E" "R" "N" "E" "R" "D"