Load libraries

library(stringr)

Extract Names

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

names <- str_extract_all(raw.data, "[[:alpha:]., ]{2,}")
names
## [[1]]
## [1] "Moe Szyslak"          "Burns, C. Montgomery" "Rev. Timothy Lovejoy"
## [4] "Ned Flanders"         "Simpson, Homer"       "Dr. Julius Hibbert"

Rearrange names

fix_names <- function(x){
  if(str_detect(x,',') == TRUE)
    return( paste(sub('.*,','' ,x), sub(',.*','' ,x)))
  else
    return(x)
}
  
vapply(unlist(names),fix_names ,'',USE.NAMES =  FALSE)
## [1] "Moe Szyslak"          " C. Montgomery Burns" "Rev. Timothy Lovejoy"
## [4] "Ned Flanders"         " Homer Simpson"       "Dr. Julius Hibbert"
#using split 

fix_names_split <- function(x){
  if(str_detect(x,',') == TRUE){
    split_names <- unlist(str_split(x,','))
    return(paste(split_names[2], split_names[1]))
  }
  else
    return(x)
}
  
vapply(unlist(names),fix_names_split ,'',USE.NAMES =  FALSE)
## [1] "Moe Szyslak"          " C. Montgomery Burns" "Rev. Timothy Lovejoy"
## [4] "Ned Flanders"         " Homer Simpson"       "Dr. Julius Hibbert"

Characters with Title

vapply(unlist(names), function(name) str_detect(name,"[[:alpha:]]{2,3}[.] [[:alpha:]]+"),T,USE.NAMES = TRUE) 
##          Moe Szyslak Burns, C. Montgomery Rev. Timothy Lovejoy 
##                FALSE                FALSE                 TRUE 
##         Ned Flanders       Simpson, Homer   Dr. Julius Hibbert 
##                FALSE                FALSE                 TRUE

Characters with second name

vapply(unlist(names), function(name) str_detect(name,"\\b[[:alpha:]]{1}[.]"),T,USE.NAMES = TRUE) 
##          Moe Szyslak Burns, C. Montgomery Rev. Timothy Lovejoy 
##                FALSE                 TRUE                FALSE 
##         Ned Flanders       Simpson, Homer   Dr. Julius Hibbert 
##                FALSE                FALSE                FALSE

‘[0-9]+\$’ . One or more digits, ends with $

regex <-'[0-9]+\\$' #One or more digits ends with $

strs<-c('123$','$123','123','1$','$','1$$','1$3')
vapply(strs, function(x) str_detect(x, regex),T)
##  123$  $123   123    1$     $   1$$   1$3 
##  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE

‘\b[a-z]{1,4}\b’. One to four small letters

regex <-'\\b[a-z]{1,4}\\b'

# one to four small letters 

strs<-c('a','aa','A','AA','abcd','abcde','AaaA')
vapply(strs, function(x) str_detect(x, regex),T)
##     a    aa     A    AA  abcd abcde  AaaA 
##  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE

’.*?\.txt$’. String ends with .txt

regex <-'.*?\\.txt$'

# string ends with .txt

strs<-c('a.txt','a.b.txt','a.b.c.txt','...txt','a...txt','a....txt','txt','.txt','.txt a')
vapply(strs, function(x) str_detect(x, regex),T)
##     a.txt   a.b.txt a.b.c.txt    ...txt   a...txt  a....txt       txt 
##      TRUE      TRUE      TRUE      TRUE      TRUE      TRUE     FALSE 
##      .txt    .txt a 
##      TRUE     FALSE

‘\d{2}/. \d{2}/\d{4}’. Like date format. 2 digits / 2 digits / 4 digits

regex <-'\\d{2}/\\d{2}/\\d{4}'

# like Date format.  2 digits  /  2 digits  /  4 digits

strs<-c('11/12/2018','2/2/18','11/2/2018','2/11/2018','11/22/18','99/99/9999')
vapply(strs, function(x) str_detect(x, regex),T)
## 11/12/2018     2/2/18  11/2/2018  2/11/2018   11/22/18 99/99/9999 
##       TRUE      FALSE      FALSE      FALSE      FALSE       TRUE

‘<(.+?)>.+?</\1>’. Like html tag.

regex <-'<(.+?)>.+?</\\1>'

#html tag 

strs<-c('<b>a</b>','<b>a</B>','<>a</>','<b>1</>', '<a>xyz</b>')
vapply(strs, function(x) str_detect(x, regex),T)
##   <b>a</b>   <b>a</B>     <>a</>    <b>1</> <a>xyz</b> 
##       TRUE      FALSE      FALSE      FALSE      FALSE

Bonus

sec_msg <- "clcopCow1zmstc0d87wnkig7OvdicpNuggvhryn92Gjuwczi8hqrfpRxs5Aj5dwpn0Tanwo
Uwisdij7Lj8kpf03AT5Idr3coc0bt7yczjatOaootj55t3Nj3ne6c4Sfek.r1w1YwwojigO
d6vrfUrbz2.2bkAnbhzgv4R9i05zEcrop.wAgnb.SqoU65fPa1otfb7wEm24k6t3sR9zqe5
fy89n6Nd5t9kc4fE905gmc4Rgxo5nhDk!gr"

msg <- unlist(str_extract_all(sec_msg, "[[:upper:].]{1,}"))

msg <- str_replace_all(paste(msg, collapse = ''), "[.]", " ")

msg
## [1] "CONGRATULATIONS YOU ARE A SUPERNERD"