More informative return value for Regexp

Is there a way to get a Regexp to tell you if it didn't match because
it won't match with the current input, or if it doesn't match (yet)
but potentially could with more input? Failing that, is there an
alternative regexp library for ruby that will allow that? I ask
becasue I'd like to do something along the lines of:

File.open(some_file) do |f|
        f.scan(/a regex/) do |res|
                # do something with res
       end
end

I realise I could just load the whole file into memory, but that seems
kind of well, icky.

There is a discussion around something related to this on RCRchive.
The upshot of the discussion is that it is not possible with regexen
in general, and lies way outside of the bounds of regexen.

-austin

···

On 5/12/05, Logan Capaldo <logancapaldo@gmail.com> wrote:

Is there a way to get a Regexp to tell you if it didn't match because
it won't match with the current input, or if it doesn't match (yet)
but potentially could with more input? Failing that, is there an
alternative regexp library for ruby that will allow that? I ask
becasue I'd like to do something along the lines of:

File.open(some_file) do |f|
        f.scan(/a regex/) do |res|
                # do something with res
       end
end

I realise I could just load the whole file into memory, but that seems
kind of well, icky.

--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca

Add your voice to RCR179
  RCR 179: Create a 'NoMatchData' object on Regex match failing.

John Carter Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : john.carter@tait.co.nz
New Zealand

Somewhere on the edge of a Galaxy, one of literally billions of such
galaxies, is a sun, one of literally billions of suns in that
galaxy.

···

On Fri, 13 May 2005, Logan Capaldo wrote:

Is there a way to get a Regexp to tell you if it didn't match because
it won't match with the current input, or if it doesn't match (yet)
but potentially could with more input? Failing that, is there an
alternative regexp library for ruby that will allow that? I ask
becasue I'd like to do something along the lines of:

I've wanted this functionality in the past. I always thought of it
in the context of accepting interactive input. As someone was typing
you could provide input as to whether the partial string would be
rejected, might be accepted, or was already valid. Simple example
would be a 5-digit zip code field. As long as the user was typing
digits the UI could indicate "ok so far". If they typed a non-digit
the UI could indicate "no good" and at the point they had typed
exactly five digits the UI could indicate "acceptable as is". If
the user continued typing beyond the five digits, the UI would indicate
"no good".

Gary Wright

···

On May 12, 2005, at 3:43 PM, Austin Ziegler wrote:

Is there a way to get a Regexp to tell you if it didn't match because
it won't match with the current input, or if it doesn't match (yet)
but potentially could with more input?

Aha. So much for that idea.

···

On 5/12/05, Austin Ziegler <halostatue@gmail.com> wrote:

On 5/12/05, Logan Capaldo <logancapaldo@gmail.com> wrote:
> Is there a way to get a Regexp to tell you if it didn't match because
> it won't match with the current input, or if it doesn't match (yet)
> but potentially could with more input? Failing that, is there an
> alternative regexp library for ruby that will allow that? I ask
> becasue I'd like to do something along the lines of:
>
> File.open(some_file) do |f|
> f.scan(/a regex/) do |res|
> # do something with res
> end
> end
>
> I realise I could just load the whole file into memory, but that seems
> kind of well, icky.

There is a discussion around something related to this on RCRchive.
The upshot of the discussion is that it is not possible with regexen
in general, and lies way outside of the bounds of regexen.

-austin
--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca