Regexp rescue method

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

-Thanks

···

--
Posted via http://www.ruby-forum.com/.

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.

···

--
RMagick OS X Installer [http://rubyforge.org/projects/rmagick/\]
RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?forum_id=1618\]
RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html\]

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 Gray II

···

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

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 Gray II schrieb:

···

On Jun 27, 2007, at 3:05 PM, Tim Hunter 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 Gray II