I thought the ? matches zero or one occurrence of a pattern. However in
this example:
def show_regexp(string, pattern)
match = pattern.match(string)
if match
“#{match.pre_match}->#{match[0]}<-#{match.post_match}”
else
“no match”
end
end
a = “The moon is made of cheese”
show_regexp(a, /\s.*?\s/) #=> The-> moon <-is made of cheese
What exactly is the ? doing?
‘John M.’ via Ruby on Rails: Talk wrote in post #1155178:
I thought the ? matches zero or one occurrence of a pattern. However in
this example:
def show_regexp(string, pattern)
match = pattern.match(string)
if match
“#{match.pre_match}->#{match[0]}<-#{match.post_match}”
else
“no match”
end
end
a = “The moon is made of cheese”
show_regexp(a, /\s.*?\s/) #=> The-> moon <-is made of cheese
What exactly is the ? doing?
*? – 0 or more, lazy. Matches will be as small as possible.
/\s.*\s/.match(searchText) (not lazy)
/\s.*?\s/.match(searchText) (lazy)
/\s.*\s/ (not lazy)
The-> moon is made of <-cheese (1 match)
/\s.*?\s/ (lazy)
=> The-> moon <-is-> made <-of cheese (2 matches)