Ruby - Colorado School of Mines
Download
Report
Transcript Ruby - Colorado School of Mines
Ruby Regular Expressions
AND OTHER LANGUAGES…
Why Learn Regular Expressions?
RegEx are part of many programmer’s tools
vi, grep, PHP, Perl
They provide powerful search (via pattern matching)
capabilities
Simple regex are easy, but more advanced patterns
can be created as needed
From: http://www.websiterepairguy.com/articles/re/12_re.html
Regular Expressions in Ruby
Objects of type Regexp
Matched using =~ operator
Constructed as
/pattern/
/pattern/options
%r{pattern}
%r{pattern}options
Regexp.new
Options provide additional info about how pattern match
should be done, for example:
i – ignore case
m – multiline, newline is an ordinary character to match
u,e,s,n – specifies encoding, such as UTF-8 (u)
From: http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UJ
Simple Example
s = "ruby is cool"
s2 = "i love ruby!"
if s =~ /Ruby/i
puts "found Ruby - case
insensitive"
end
if s =~ /[Rr]uby/
puts "found Ruby - Rr option"
end
if s =~ /\Aruby/
puts "found Ruby at beginning"
end
if s2 =~ /\Aruby/
puts "found Ruby at beginning"
else
puts "ruby is not at the beginning"
end
s3 = "I love Java and Ruby and PHP"
if s3 =~ /Java|PHP/
puts "what, another language?"
end
partNum = "aZ2"
if partNum =~ /[a-z][A-Z][0-9]/
puts "part number is lower-case
then upper-case then digit"
end
anotherPart = "A45@"
if anotherPart =~ /.[0-9]+@/
puts "another part is any character,
some digits, @"
end
Play with Regex: rubular.com
Quick Exercise
Create regex for the following. Use rubular.com to
check it out.
Phone numbers
(303) 555-2222
303.555.2222
3035552222
Date
nn-nn-nn
Try some other options
Some Resources
http://www.bluebox.net/about/blog/2013/02/using
regular-expressions-in-ruby-part-1-of-3/
http://www.ruby-doc.org/core-2.0.0/Regexp.html
http://rubular.com/
http://coding.smashingmagazine.com/2009/06/01/essent
ial-guide-to-regular-expressions-tools-tutorials-andresources/
http://www.ralfebert.de/archive/ruby/regex_cheat_sheet/
http://stackoverflow.com/questions/577653/differencebetween-a-z-and-in-ruby-regular-expressions (thanks, Austin
and Santi)
Topic Exploration
http://www.codinghorror.com/blog/2005/02/regex-use-vs-regex-abuse.html
http://programmers.stackexchange.com/questions/113237/when-you-should
not-use-regular-expressions
http://coding.smashingmagazine.com/2009/05/06/introduction-toadvanced-regular-expressions/
http://stackoverflow.com/questions/5413165/ruby-generating-new-regexpsfrom-strings
A little more motivation to use…
http://blog.stevenlevithan.com/archives/10-reasons-to-learn-and-use-regularexpressions
http://www.websiterepairguy.com/articles/re/12_re.html
Submit on BB (3 points) and report back: 3-5 things you want to remember
about regex. Include the URL. Feel free to read others not in the list.
In-class Challenge
Review one of the regex cheat sheets
Make up a pattern (e.g., part numbers, foreign
telephone numbers, dates, parse an error log, etc.).
Try to use as many aspects of regex as you can. For
example, when I pay VISA online, my confirmation
includes an embedded date and some other
encoding. Create examples of your pattern
Have your neighbor try to recreate your pattern.
Nothing to submit.
Is this exercise intended to explore good uses of regex? NO! It’s
just a logic puzzle and refresher (or intro) to regex syntax.