Why does "*" cause my tiny regextester program to crash?
Vladimir Panteleev
vladimir at thecybershadow.net
Sun Jan 30 18:47:17 PST 2011
On Mon, 31 Jan 2011 03:57:44 +0200, Alex Folland <lexlexlex at gmail.com>
wrote:
> I wrote this little program to test for regular expression matches. I
> compiled it with in Windows with DMD 2.051 through Visual Studio 2010
> with Visual D. It crashes if regexbuf is just the single character,
> "*". Why? Shouldn't it match the entire string?
"*" in regular expressions means 0 or more instances of the previous
entity:
http://www.regular-expressions.info/repeat.html
It doesn't make sense at the start of an expression. ".*" is the regexp
that matches anything[1].
std.regex probably can't handle invalid regexps very well. Note that
std.regex is a new module that intends to replace the older std.regexp,
but still has some problems.
> Also, why does it match an unlimited number of times on "$" instead of
> just once?
Looks like another std.regex bug.
> My debug build is here: http://lex.clansfx.co.uk/projects/regextester.exe
A note for the future: compiled executables aren't very useful when source
is available, especially considering many people here don't use Windows.
[1]: A dot in a regular expression may not match newlines, depending on
the implementation and search options.
--
Best regards,
Vladimir mailto:vladimir at thecybershadow.net
More information about the Digitalmars-d-learn
mailing list