Leandro Lucarella wrote:
Bill Baxter, el 19 de febrero a las 14:50 me escribiste:
[snip]
regex("a[b-e]", "g")).match("abracazoo")

but most regex code I've seen mentions the string first and the regex
second. So I dropped that idea.
[snip]
Now, match() is likely to be called very often so I'm considering:

foreach (e; "abracazoo" ~ regex("a[b-e]", "g"))
   writeln(e);

In general I'm weary of unwitting operator overloading, but I think this
case is more justified than others. Thoughts?
No.  ~ means matching in Perl.  In D it means concatenation.  This
special case is not special enough to warrant breaking D's convention,
in my opinion.  It also breaks D's convention that operators have an
inherent meaning which shouldn't be subverted to do unrelated things.
What about turning it around and using 'in' though?

   foreach(e; regex("a[b-e]", "g") in "abracazoo")
      writeln(e);

The charter for "in" isn't quite as focused as that for ~, and anyway
you could view this as finding instances of the regular expression
"in" the string.

I think match is pretty short, I don't see any need for any shortcut wich
makes the code more obscure.

BTW, in case Andrei was looking for a precedent, Python uses the syntax
like:
regex("a[b-e]", "g")).match("abracazoo")

Yah, but since even bearophile admitted python kinda botched regexes, I better not consider this argument :o). The Unix toolchain invariably puts the string before the regex.

Andrei

Reply via email to