#  Learning RegEx


stringVec <- c("hello world!", "Sigur RÃÃ³s - ab,cd.txt", "Sigur RÃÃ³s - Sigur RÃ³s 123 Abcdefg")

#==========================================#
#------------------------------------------#
#          ALL ASCI CHARACTERS             #
#------------------------------------------#

[^\x00-\x7F]

# REMEMBER TO ESCAPE THE ESCAPE! 
pattern <- "[^\\x00-\\x7F]"

grep    (pattern, stringVec)  # 1 2 3
grepl   (pattern, stringVec)  # TRUE TRUE TRUE
regexpr (pattern, stringVec)  # 1 1 1
gregexpr(pattern, stringVec)  # returns a list of long vectors, indicating each match + attribute of match length. 
regexec (pattern, stringVec)  # returns a list of 


# replacing
strn <- stringVec[[2]]
matches <- gregexpr(pattern, strn)[[1]]
strn[-matches]

#==========================================#
#------------------------------------------#
#          ALL WORDS                       #
#------------------------------------------#

# This should match all non word, non digit and non star (*) character. 
#  So, the characters [0-9][a-z][A-Z] *

[^\w\*]

pattern <- "[^\\w\\*]"

grep    (pattern, stringVec)  # 1 2 3
grepl   (pattern, stringVec)  # TRUE TRUE TRUE
regexpr (pattern, stringVec)  # 1 1 1
gregexpr(pattern, stringVec)  # returns a list of long vectors, indicating each match + attribute of match length. 
regexec (pattern, stringVec)  # returns a list of 


 #    # READ HERE ON WHY YOU CANNOT NEGATE A REGEX
 #    http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word
 #    http://www.perlmonks.org/?node_id=588315#588368




#==========================================#
#------------------------------------------#
#             SIMPLE REGEX                 #
#------------------------------------------#


pattern <-   Simple_regex <- "[^0-9a-zA-Z -.]"
stringVec <-  "Sigur RÃÃ³s - ab,cd.txt"

grep    (pattern, stringVec)  # 1 2 3
grepl   (pattern, stringVec)  # TRUE TRUE TRUE
regexpr (pattern, stringVec)  # 1 1 1
gregexpr(pattern, stringVec)  # returns a list of long vectors, indicating each match + attribute of match length. 
regexec (pattern, stringVec)  # returns a list of 
