dsimcha wrote:
== Quote from Joel C. Salomon (joelcsalo...@gmail.com)'s article
dsimcha wrote:
Is there an *efficient* way to simply test whether a given string contains a
given regex in the new std.regex? Using match() and testing for empty works,
but this apparently triggers a bunch of unnecessary heap allocation. If not,
is this a universal enough feature to warrant an enhancement request?
You mean to search for a regex match without constructing the regex
engine? Good luck with that.
—Joel Salomon
Actually, the behavior Andrei describes is what I wanted: One allocation to
construct the regex engine, amortized. However, contrary to what Andrei said,
match() apparently allocates additional memory on each call. The following
program leaks memory like a sieve when the GC is disabled:
import std.regex, core.memory;
void main() {
string s = "This is only a test. Repeat, this is only a test.";
auto r = regex("is.only");
GC.disable;
while(true) {
auto m = match(s, r);
}
}
Ah... Sigh, I meant to implement the short string optimization in the
regex range, and put it off forever. It was about time it would come
back to haunt me :o).
Could you please submit an enhancement request to Bugzilla? Maybe with a
patch? :o)
Andrei