47 #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
48 static inline QString anchoredPattern(
const QString &expression)
50 return QLatin1String(
"\\A(?:")
52 + QLatin1String(
")\\z");
105 QString Pattern::wildcardToRegularExpression(
const QString &pattern)
107 const int wclen = pattern.length();
109 rx.reserve(wclen + wclen / 16);
111 const QChar *wc = pattern.data();
114 const QLatin1Char nativePathSeparator(
'\\');
115 const QLatin1String starEscape(
"[^/\\\\]*");
116 const QLatin1String questionMarkEscape(
"[^/\\\\]");
118 const QLatin1Char nativePathSeparator(
'/');
119 const QLatin1String starEscape(
"[^/]*");
120 const QLatin1String questionMarkEscape(
"[^/]");
124 const QChar c = wc[i++];
125 switch (c.unicode()) {
130 rx += questionMarkEscape;
135 rx += QLatin1String(
"[/\\\\]");
147 rx += QLatin1Char(
'\\');
154 if (wc[i] == QLatin1Char(
'!')) {
155 rx += QLatin1Char(
'^');
159 if (i < wclen && wc[i] == QLatin1Char(
']'))
162 while (i < wclen && wc[i] != QLatin1Char(
']')) {
166 if (wc[i] == QLatin1Char(
'/') || wc[i] == nativePathSeparator)
168 if (wc[i] == QLatin1Char(
'\\'))
169 rx += QLatin1Char(
'\\');
180 return anchoredPattern(rx);