Le 24/02/2017 à 17:17, Kornel Benko a écrit :
Little net-search gives for example:
http://stackoverflow.com/questions/13526884/inconsistency-between-boostregex-and-stdregex
http://stackoverflow.com/questions/7589672/boost-regex-vs-c11-regex
http://stackoverflow.com/questions/26696250/difference-between-stdregex-match-stdregex-search
Citing from the first url:
gcc of course doesn't support the tr1/c++11 regex, but to give a more
general answer,
boost.regex's default is perl 5, according to its documentation, while
C++ default is
ECMAScript, extended by several locale-dependent elements of POSIX BRE.
Kornel
The first link points to this:
http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.perl_extended_patterns
which explains that perl extended patterns start with ``(?''. So all we
have to do is some grep and:
src/Buffer.cpp:// chktex should be run with these flags disabled: 3, 22,
25, 30, 38(?)
src/LayoutFile.cpp:
"(?:\\[([^,]*)(?:,.*)*\\])*\\s*\\{(.*)\\}\\s*");
src/frontends/qt4/GuiApplication.cpp: QRegExp re(
"[=]*(?:([0-9]+)[xX]([0-9]+)){0,1}[
]*(?:([+-][0-9]*)){0,1}(?:([+-][0-9]*)){0,1}" );
src/frontends/qt4/GuiDocument.cpp: // disable if there aren't any
modules (?), if none of them is chosen
src/frontends/qt4/GuiThesaurus.cpp: QRegExp
re("^([^\\(\\)]+)\\b\\(?.*\\)?.*$");
src/frontends/qt4/GuiThesaurus.cpp: QRegExp
rex("^(\\(.+\\))\\s*([^\\(\\)]+)\\s*\\(?.*\\)?.*$");
src/frontends/qt4/GuiThesaurus.cpp: QRegExp
re("^([^\\(\\)]+)\\b\\(?.*\\)?.*$");
src/frontends/qt4/GuiThesaurus.cpp: QRegExp
rex("^(\\(.+\\))\\s*([^\\(\\)]+)\\s*\\(?.*\\)?.*$");
src/frontends/qt4/GuiWorkArea.cpp: // FIXME(?):
src/frontends/qt4/LaTeXHighlighter.cpp: QRegExp
exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$");
src/insets/InsetTabular.cpp: // FIXME(?): do we need
a second metrics call?
src/lyxfind.cpp: escape_map.push_back(P("\\",
"(?:\\\\|\\\\backslash)"));
src/lyxfind.cpp: escape_map.push_back(P("~",
"(?:\\\\textasciitilde|\\\\sim)"));
src/lyxfind.cpp: escape_map.push_back(P("^",
"(?:\\^|\\\\textasciicircum\\{\\}|\\\\mathcircumflex)"));
src/lyxfind.cpp: escape_map.push_back(P("\\\\",
"(?:\\\\\\\\|\\\\backslash|\\\\textbackslash\\{\\})"));
src/lyxfind.cpp: escape_map.push_back(P("\\^",
"(?:\\^|\\\\textasciicircum\\{\\}|\\\\mathcircumflex)"));
Of course, only the last ones in lyxfonc.cpp matter here. The others are
interesting if only because I see now that we also use QRegex, which
seems to accept perl extensions.
So for now, we need to understand what is this syntax and use the
ECMAscript equivalent. AFAICS, the only for used is (?:, described as:
(?:pattern) lexically groups pattern, without generating an
additional sub-expression.
I do not know how important this thing is. What would go wrong if we
just removed the grouping?
JMarc