63
# replace non-word with  _
sub("nnB""_""the dandelion war r 2010")
## [1] "t_he dandelion war 2010"
gsub("nnB""_""the dandelion war 2010")
## [1] "t_he d_an_de_li_on w_ar 2_01_0"
Word boundaries and non-word-boundaries
# replace word boundary with  _
sub("nnw""_""the dandelion war r 2010")
## [1] "_he dandelion war 2010"
gsub("nnw""_""the dandelion war 2010")
## [1] "___ _________ ___ ____"
# replace non-word-boundary with  _
sub("nnW""_""the dandelion war r 2010")
## [1] "the_dandelion war 2010"
gsub("nnW""_""the dandelion war 2010")
## [1] "the_dandelion_war_2010"
5.2.4 Character Classes
A character class or character set is a list of characters enclosed by square brackets [ ].
Character sets are used to match only one of several characters. For instance, the regex
character class [aA] matches any lower case letter a or any upper case letter A. Likewise, the
regular expression [0123456789] matches any single digit. It is important not to confuse a
regex character class with the native R "character" class concept.
Aparticular case of character classes is when we include the caret ^ at the beginning of the
list: this indicates that the regular expression matches any character NOT in the list. This
is the reason why this conguration is also known as class negation or negated character
class. For example, the regular expression [^xyz] matches anything except the characters
x, y or z.
In addition, sets of characters such as digits, lower case ASCII letters, and upper case ASCII
letters can be specied as a range of characters by giving the rst and last characters, sepa-
rated by a hyphen. For instance, the regular expression [a-z] matches any lower case ASCII
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Convert pdf to powerpoint online for - Library control component:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
Convert pdf to powerpoint online for - Library control component:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
64
letter. In turn the chracter class [0-9] matches any digit.
Some (Regex) Character Classes
Anchor
Description
[aeiou]
match any one lower case vowel
[AEIOU]
match any one upper case vowel
[0123456789] match any digit
[0-9]
match any digit (same as previous class)
[a-z]
match any lower case ASCII letter
[A-Z]
match any upper case ASCII letter
[a-zA-Z0-9]
match any of the above classes
[^aeiou]
match anything other than a lowercase vowel
[^0-9]
match anything other than a digit
Let’s see a basic example. Imagine that we have a character vector with several words and
that we are interested in matching those words containing the vowels "e" or "i". For this
purpose, we can use the character class "[ei]":
# some string
transport = c("car""bike""plane""boat")
# look for  e  or  i
grep(pattern = "[ei]", transport, value = = TRUE)
## [1] "bike" "plane"
Here’s another example with digit character classes:
# some numeric strings
numerics = c("123""17-April""I-II-III""R 3.0.1")
# match strings with 0 or 1
grep(pattern = "[01]", numerics, , value e = TRUE)
## [1] "123"
"17-April" "R 3.0.1"
# match any digit
grep(pattern = "[0-9]", numerics, value = = TRUE)
## [1] "123"
"17-April" "R 3.0.1"
# negated digit
grep(pattern = "[^0-9]", numerics, value = = TRUE)
## [1] "17-April" "I-II-III" "R 3.0.1"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library control component:Online Convert PowerPoint to PDF file. Best free online export
Online Powerpoint to PDF Converter. Download Free Trial. Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue
www.rasteredge.com
Library control component:VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Word to PDF; Convert Excel to PDF; Convert PowerPoint to PDF; Convert Image
www.rasteredge.com
65
5.2.5 POSIX Character Classes
Closely related to the regex character classes we have what is known as POSIX character
classes. In R, POSIX character classes arerepresented with expressions insidedoublebrackets
[[ ]]. The following table shows the POSIX character classes as used in R:
POSIX Character Classes in R
Class
Description
[[:lower:]]
Lower-case letters
[[:upper:]]
Upper-case letters
[[:alpha:]]
Alphabetic characters ([[:lower:]] and [[:upper:]])
[[:digit:]]
Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
[[:alnum:]]
Alphanumeric characters ([[:alpha:]] and [[:digit:]])
[[:blank:]]
Blank characters: space and tab
[[:cntrl:]]
Control characters
[[:punct:]]
Punctuation characters: ! " # % & ’ ( ) * + , - . / : ;
[[:space:]]
Space characters: tab, newline, vertical tab, form feed,
carriage return, and space
[[:xdigit:]] Hexadecimal digits: 0-9 A B C D E F a b c d e f
[[:print:]]
Printable characters ([[:alpha:]], [[:punct:]] and space)
[[:graph:]]
Graphical characters ([[:alpha:]] and [[:punct:]])
For example, suppose we are dealing with the following string:
# la vie (string)
la_vie = "La vie e en n #FFC0CB (rose);nnCes t la vie! ! nttres jolie"
# if you print  la_vie
print(la_vie)
## [1] "La vie en #FFC0CB (rose);\nCes t la vie! \ttres jolie"
# if you cat  la_vie
cat(la_vie)
## La vie en #FFC0CB (rose);
## Ces t la vie! tres jolie
Here’s what would happen to the string la
vie if we apply some substitutions with the
POSIX character classes:
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library control component:C# HTML5 PDF Viewer SDK to convert and export PDF document to
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Word to PDF; Convert Excel to PDF; Convert PowerPoint to PDF; Convert Image
www.rasteredge.com
Library control component:XDoc.HTML5 Viewer for .NET, Zero Footprint AJAX Document Image
View, Convert, Edit, Sign Documents and Images. Online Demo See the HTML5 Viewer SDK for .NET in powerful & profession imaging controls, PDF document, image to
www.rasteredge.com
66
# remove space characters
gsub(pattern = "[[:blank:]]", replacement t = "", la_vie)
## [1] "Lavieen#FFC0CB(rose);\nCes tlavie!tresjolie"
# remove digits
gsub(pattern = "[[:punct:]]", replacement t = "", la_vie)
## [1] "La vie en FFC0CB rose\nCest la vie \ttres jolie"
# remove digits
gsub(pattern = "[[:xdigit:]]", replacement t = "", la_vie)
## [1] "L vi n # (ros);\ns t l vi! \ttrs joli"
# remove printable characters
gsub(pattern = "[[:print:]]", replacement t = "", la_vie)
## [1] "\n\t"
# remove non-printable characters
gsub(pattern = "[^[:print:]]", replacement t = "", la_vie)
## [1] "La vie en #FFC0CB (rose);Ces t la vie! tres jolie"
# remove graphical characters
gsub(pattern = "[[:graph:]]", replacement t = "", la_vie)
## [1] "
\n
\t "
# remove non-graphical characters
gsub(pattern = "[^[:graph:]]", replacement t = "", la_vie)
## [1] "Lavieen#FFC0CB(rose);Ces tlavie!tresjolie"
5.2.6 Quantiers
Another important set of regex elements are the so-called quantiers. These are used when
we want to match a certain number of characters that meet certain criteria.
Quantiers specify how many instances of a character, group, or character class must be
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library control component:C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
NET library to batch convert PDF files to jpg image files. Turn multiple pages PDF into single jpg files respectively online.
www.rasteredge.com
Library control component:VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Word to PDF; Convert Excel to PDF; Convert PowerPoint to PDF; Convert Image
www.rasteredge.com
67
present in the input for a match to be found. The following table shows the regex quantiers:
Quantiers in R
Quantier Description
?
The preceding item is optional and will be matched at most once
*
The preceding item will be matched zero or more times
+
The preceding item will be matched one or more times
fng
The preceding item is matched exactly n times
fn,g
The preceding item is matched n or more times
fn,mg
The preceding item is matched at least n times, but not more than m times
Some examples
# people names
people = c("rori""emilia""matteo""mehmet""filipe""anna""tyler",
"rasmus", "jacob", "youna", "flora", "adi")
# match  m  at most once
grep(pattern = "m?", people, , value = = TRUE)
## [1] "rori"
"emilia" "matteo" "mehmet" "filipe" "anna"
"tyler"
## [8] "rasmus" "jacob" "youna" "flora" "adi"
# match  m  exactly once
grep(pattern = "mf1g", people, , value = = TRUE, , perl = FALSE)
## [1] "emilia" "matteo" "mehmet" "rasmus"
# match  m  zero or more times, and  t
grep(pattern = "m*t", people, , value = = TRUE)
## [1] "matteo" "mehmet" "tyler"
# match  t  zero or more times, and  m
grep(pattern = "t*m", people, , value = = TRUE)
## [1] "emilia" "matteo" "mehmet" "rasmus"
# match  m  one or more times
grep(pattern = "m+", people, , value = = TRUE)
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library control component:C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Word to PDF; Convert Excel to PDF; Convert PowerPoint to PDF; Convert Image
www.rasteredge.com
Library control component:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Convert PDF to HTML. |. Home ›› XDoc.PDF ›› VB.NET PDF: PDF to HTML. Convert PDF to HTML in VB.NET Demo Code. Add necessary references:
www.rasteredge.com
68
## [1] "emilia" "matteo" "mehmet" "rasmus"
# match  m  one or more times, and  t
grep(pattern = "m+.t", people, , value = = TRUE)
## [1] "matteo" "mehmet"
# match  t  exactly twice
grep(pattern = "tf2g", people, , value = = TRUE)
## [1] "matteo"
5.3 Functions for Regular Expressions
Once we’ve described how R handles some of the most common regular expression elements,
it’s time to present the functions we can use for working with regular expressions.
5.3.1 Main Regex functions
Rcontains a set of functions in the base package that we can use to nd pattern matches.
The following table lists these functions with a brief description:
Regular Expression Functions in R
Function
Purpose
Characteristic
grep()
nding regex matches
which elements are matched (index or value)
grepl()
nding regex matches
which elements are matched (TRUE & FALSE)
regexpr()
nding regex matches
positions of the rst match
gregexpr() nding regex matches
positions of all matches
regexec()
nding regex matches
hybrid of regexpr() and gregexpr()
sub()
replacing regex matches only rst match is replaced
gsub()
replacing regex matches all matches are replaced
strsplit() splitting regex matches split vector according to matches
The rst ve functions listed in the previous table are used for nding pattern matches in
character vectors. The goal is the same for all these functions: nding a match. The
dierence between them is in the format of the output. The next two functions |sub()
and gsub()| are used for substitution: looking for matches with the purpose of replacing
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
69
them. The last function, strsplit(), is used to split elements of a character vector into
substrings according to regex matches.
Basically, all regex functionsrequiretwomain arguments: a pattern (i.e. regular expression),
and a text to match. Each function has other additional arguments but the main ones are a
pattern and some text. In particular, the pattern is basically a character string containing
aregular expression to be matched in the given text.
You can check the documentation of all the grep()-like functions by typing help(grep) (or
alternatively ?grep).
# help documentation for main regex functions
help(grep)
5.3.2 Regex functions in stringr
The R package stringr also provides several functions for regex operations (see table below).
More specically, stringr provides pattern matching functions to detect, locate, extract,
match, replace and split strings.
Regex functions in stringr
Function
Description
str
detect()
Detect the presence or absence of a pattern in a string
str
extract()
Extract rst piece of a string that matches a pattern
str
extract
all() Extract all pieces of a string that match a pattern
str
match()
Extract rst matched group from a string
str
match
all()
Extract all matched groups from a string
str
locate()
Locate the position of the rst occurence of a pattern in a string
str
locate
all()
Locate the position of all occurences of a pattern in a string
str
replace()
Replace rst occurrence of a matched pattern in a string
str
replace
all() Replace all occurrences of a matched pattern in a string
str
split()
Split up a string into a variable number of pieces
str
split
fixed() Split up a string into a xed number of pieces
One ofthe important things to keep in mind is that all pattern matching functions in stringr
have the following general form:
str_function(string, pattern)
The common characteristic is that they all share the rst two arguments: a string vector
to be processed and a single pattern (i.e. regular expression) to match.
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
70
5.3.3 Complementary matching functions
Together with the primary grep()-like functions, R has other related matching functions
such as regmatches(), match(), pmatch(), charmatch(). The truth is that regmatches()
is the only function that is designed to work with regex patterns. The other matching
functions don’t work with regular expressions but we can use them to match terms (e.g.
words, argument names) within a character vector.
Complementary Matching Functions
Function
Purpose
Characteristic
regmatches() extract or replace matches use with data from regexpr(),
gregexpr() or regexec()
match()
value matching
nding positions of (rst) matches
pmatch()
partial string matching
nding positions
charmatch()
similar to pmatch()
nding positions
5.3.4 Accessory functions accepting regex patterns
Likewsie, R contains other functions that interact or accept regex patterns: apropos(),
ls(), browseEnv(), glob2rx(), help.search(), list.files(). The main purpose of these
functions is to search for R objects or les, but they can take a regex pattern as input.
Accessory Functions
Function
Description
apropos()
nd objects by (partial) name
browseEnv()
browse objects in environment
glob2rx()
change wildcard or globbing pattern into Regular Expression
help.search() search the help system
list.files()
list the les in a directory/folder
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Chapter 6
Regular Expressions (part II)
In the previous chapter we talked about regular expressions in general; we discussed the
particular way in which R works with regex patterns; and we also saw a quick presentation of
the functions that we can use to manipulate strings with regular expressions. In this chapter
we are going to describe in more detail the functions for regular expressions and we will see
some examples that show their uses.
6.1 Pattern Finding Functions
Let’s begin by reviewing the rst ve grep()-like functions grep(), grepl(), regexpr(),
gregexpr(), and regexec(). The goal is the same for all these functions: nding a match.
The dierencebetween them is in the format ofthe output. Essentially thesefunctions require
two main arguments: a pattern (i.e. regular expression), and a text to match. The basic
usage for these functions is:
grep(pattern, text)
grepl(pattern, text)
regexpr(pattern, text)
gregexpr(pattern, text)
regexec(pattern, text)
Each function has other additional arguments but the important thing to keep in mind are
apattern and some text.
71
72
6.1.1 Function grep()
grep() is perhaps the most basic functions that allows us to match a pattern in a string
vector. The rst argument in grep() is a regular expression that species the pattern to
match. The second argument is a character vector with the text strings on which to search.
The output is the indices of the elements of the text vector for which there is a match. If no
matches are found, the output is an empty integer vector.
# some text
text = c("one word""a sentence""you and me""three two one")
# pattern
pat = "one"
# default usage
grep(pat, text)
## [1] 1 4
As you can see from the output in the previous example, grep() returns a numeric vector.
This indicates that the 1st and 4th elements contained a match. In contrast, the 2nd and
the 3rd elements did not.
We can use the argument value to modify the way in which the output is presented. If we
choose value = TRUE, instead of returning the indices, grep() returns the content of the
string vector:
# with  value  (showing matched text)
grep(pat, text, , value = = TRUE)
## [1] "one word"
"three two one"
Another interesting argument to play with is invert. We can use this parameter to obtain
unmatches strings by setting its value to TRUE
# with  invert  (showing unmatched parts)
grep(pat, text, , invert t = TRUE)
## [1] 2 3
# same with  values
grep(pat, text, , invert t = TRUE, , value = = TRUE)
## [1] "a sentence" "you and me"
In summary, grep() can be used to subset a character vector to get only the elements
containing (or not containing) the matched pattern.
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Documents you may be interested
Documents you may be interested