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