]> git.tdb.fi Git - libs/core.git/blobdiff - source/regex.cpp
Add specialization for lexical_cast<std::string> to avoid borking with spaces
[libs/core.git] / source / regex.cpp
index a1babf46d019b77a1db433a92ed447a0fbd2d6a2..c2590f2c8f8d9109606d06499da24b6b51c87e80 100644 (file)
@@ -86,11 +86,21 @@ Regex::Code Regex::compile(const string &expr, string::const_iterator &iter, uns
        bool has_branches=false;
        unsigned level=0;
        bool escape=false;
+       unsigned bracket=0;
        string::const_iterator end;
        for(end=iter; end!=expr.end(); ++end)
        {
                if(escape)
                        escape=false;
+               else if(bracket)
+               {
+                       if(bracket==3 && *end==']')
+                               bracket=0;
+                       else if(bracket==1 && *end=='^')
+                               bracket=2;
+                       else
+                               bracket=3;
+               }
                else if(*end=='\\')
                        escape=true;
                else if(*end=='(')
@@ -113,6 +123,8 @@ Regex::Code Regex::compile(const string &expr, string::const_iterator &iter, uns
                        else if(level==0)
                                has_branches=true;
                }
+               else if(*end=='[')
+                       bracket=1;
        }
 
        if(level>0)