|
Regular Expressions I | |
|
| |
| re1.rb | Regular Expressions II |
# Get a chomped string, or nil at EOF.
def getstr
print "Please enter a test string: "
str = gets
return str unless str
return str.chomp
end
# Test strings
while str = getstr
print "You entered: ", str, "\n"
# Run some random tests and print a descriptive message for ones which
# match.
num = 0
if str =~ /^\s*$/ then
print " > Your string is all blanks.\n"
next
end
if str =~ /Mommy/ then
print " > Contains Mommy\n"
num += 1
end
if str =~ /Mommy.*Daddy/ then
print " > Contains Mommy, then Daddy\n"
num += 1
end
if str !~ /CAT/ then
print " > Does not contain CAT.\n"
num += 1
end
if str !~ /[Cc][Aa][Tt]/ then
print " > Does not contain cat (any capitalization).\n"
num += 1
end
if str =~ /^AA/ then
print " > Starts with AA\n"
num += 1
end
if str =~ /(ing|ed)$/ then
print " > Ends in ing or ed\n"
num += 1
end
if str =~ /^\d+$/ then
print " > Is an unsigned integer\n"
num += 1
end
if str =~ /^(\+|\-)\d+$/ then
print " > Is a signed integer\n"
num += 1
end
if str !~ /[AEIOUaeiou]/ then
print " > Contains no vowels.\n"
num += 1
end
if str =~ /@[^A-Z]*$/ then
print " > Has an at sign with no upper case letters following it.\n"
num += 1
end
if str =~ /^[^%]*%[^%]*%[^%]*%[^%]*$/ then
print " > Contains exactly 3 percent signs.\n"
num += 1
end
if str =~ %r=^(http|ftp)://([a-zA-Z-]+(\.[a-zA-Z-]+)+)(/|$)= then
proto = $1
host = $2
print " > Looks like a lot of common URLs with protocol #{proto} ",
"and host #{host}.\n"
num += 1
end
# What happened?
if num == 0 then
print "=== That string is remarkably boring. ===\n"
else
print "=== Found ", num,
" interesting thing" + (if num > 1 then "s" else "" end),
" about that string. ===\n"
end
end
Regexp object, much as putting quoted characters create a
String object. As the %Q for strings, the
%r notation allows an alternate delimiter on regular expressions.
In this program, use the =~ operator to ask if a string
matches the pattern, and !~ to ask if it doesn't.
Parentheses used in regular expressions group operations just
as the do in ordinary expressions. In addition,
the characters matched by each parenthetical
group are assigned to a special variable, $n, where the
left paren was the nth from the left.
Regular expressions are a large topic, and we'll have some class discussion about them.
| Regular Expressions II |