Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - RegExp bug?
It seems that case-insensitive regular expressions become case sensitive after a literal '.' in the pattern. Below is a test program compiled with DMC version 8.33 and a sample run. Note that every test string should match but uppercase chars after the '.' cause no match. **** test program **** // retest.cpp - RegExp test // argv[1] is pattern // search for pattern in argv[2..argc-1] #include <iostream.h> #include <regexp.h> #include <assert.h> main(int argc, char *argv[]) { assert(argc>2); RegExp re; assert(re.compile(argv[1],"i",1)); // "i" = case insensitive for (int j=2; j<argc; ++j) { cout << argv[j]; if (re.test(argv[j])) cout << " match " << re.pmatch[0].rm_so << ' ' << re.pmatch[0].rm_eo << '\n'; else cout << " no match\n"; } } **** sample run **** **** (note . after \ in some fonts it is hard to see) **** C:\dm\temp> retest a\.b A.b a.B A.B a.b A.b match 0 3 a.B no match A.B no match a.b match 0 3 May 19 2003
|