Regexp rescue method


#1

How would I write a rescue method to recover from a failed regexp
parsing?

-Thanks


#2

th8254 wrote:

How would I write a rescue method to recover from a failed regexp
parsing?

-Thanks

I don’t think that raises an error. You’d have to check for a nil result
instead.


#3

On Jun 27, 2007, at 3:05 PM, Tim H. wrote:

th8254 wrote:

How would I write a rescue method to recover from a failed regexp
parsing?

-Thanks

I don’t think that raises an error. You’d have to check for a nil
result instead.

I took the question to mean, how would I recover from a malformed
Regexp error like:

re = /[/
SyntaxError: compile error
(irb):1: invalid regular expression; ‘[’ can’t be the last character
ie. can’t start range at the end of pattern: /[/
from (irb):1

I don’t know of a way to recover from that specific example either,
which is why I didn’t jump to answer:

begin
?> re = /[/

rescue SyntaxError
puts “Your Regexp is malformed.”
end
SyntaxError: compile error
(irb):3: invalid regular expression; ‘[’ can’t be the last character
ie. can’t start range at the end of pattern: /[/
from (irb):6

But, if you change the way the expression is built, it does seem to
become a recoverable error:

begin
?> re = Regexp.new("[")

rescue RegexpError
puts “Your Regexp is malformed.”
end
Your Regexp is malformed.
=> nil

James Edward G. II


#4

I can’t catch it even with rescue Object… wow.

you could also eval it, k, thats even more evil:

begin
re = eval ‘/abc/’
p re
re = eval ‘/[/’
rescue SyntaxError
puts ‘hit’
end

Sincerely
Florian

James Edward G. II schrieb: