Accidentally responded to originator, not list:

----- Forwarded message from [EMAIL PROTECTED] -----

On 14 Feb 02 at 10:25:13PM, Daniel R. Allen wrote:
> Thanks to all of the people who came up with answers.  Ultimately the one
> I'm happiest with was the one Japhy emailed me, which shows that it can
> indeed be done in a regex.

Well, I think that's stretching it a bit. It's doing it with a "while"
loop that uses a regex among other operations.

Mind you, you can't really do much with just a regex; you generally
need m//xyz or s///xyz or split, at least, and often control
structures to provide repeated matching. People often ask "can you
give me a regex to do <blah>", when they mean "can you give me a
substitution statement to do <blah>" or more cynically, "I don't know
much about Perl, but I've heard Perl regexes can do everything...".

--

DRA previously:
> As I understand, perl uses the Boyer-Moore algorithm in the regex
> engine, so should it be possible to backtrack to the longest common
> string using a RE?  Even if you don't know the text of the match
> beforehand?

I'm not sure what this has to do with B-M...I thought that was simply
an efficient algorithm for matching a specific substring. Backtracking
is a property of the matching engine.

None of the solutions are specifically using B-M to achieve the effect
you were after; but some use external code to work around the
limitations of the regex engine, one of which, it could be argued I
suppose, being that the regex engine can only match against a single
string...

---

I was curious to see what Japhy would do to join the strings (to allow
the regex engine to attack both together). I ended up shying away from
joining them, partly to avoid false matches (Japhy has ruled them out
by disallowing NULs), and partly because I thought it was simpler to
just do a plain string match using index() on the second string (which
I seem to remember reading uses B-M in its implementation...).


> And it even works in perl 5.005.

That's the shame about experimental features ("(?{})", which I used to
gain access to all the substrings to avoid the while loop, did not
work as well in earlier versions).

Regards,


Ian

----- End forwarded message -----

Reply via email to