--- a/src/core/processing/models/qgsprocessingmodelalgorithm.cpp
+++ b/src/core/processing/models/qgsprocessingmodelalgorithm.cpp
@@ -1085,7 +1085,7 @@
   auto safeName = []( const QString & name )->QString
   {
     QString s = name;
-    const thread_local QRegularExpression safeNameRe( QStringLiteral( "[\\s'\"\\(\\):\\.]" ) );
+    const QRegularExpression safeNameRe( QStringLiteral( "[\\s'\"\\(\\):\\.]" ) );
     return s.replace( safeNameRe, QStringLiteral( "_" ) );
   };
 
--- a/src/core/processing/qgsprocessingalgorithm.cpp
+++ b/src/core/processing/qgsprocessingalgorithm.cpp
@@ -332,7 +332,7 @@
   auto escapeIfNeeded = []( const QString & input ) -> QString
   {
     // play it safe and escape everything UNLESS it's purely alphanumeric characters (and a very select scattering of other common characters!)
-    const thread_local QRegularExpression nonAlphaNumericRx( QStringLiteral( "[^a-zA-Z0-9.\\-/_]" ) );
+    const QRegularExpression nonAlphaNumericRx( QStringLiteral( "[^a-zA-Z0-9.\\-/_]" ) );
     if ( nonAlphaNumericRx.match( input ).hasMatch() )
     {
       QString escaped = input;
--- a/src/core/processing/qgsprocessingcontext.cpp
+++ b/src/core/processing/qgsprocessingcontext.cpp
@@ -192,7 +192,7 @@
   auto escapeIfNeeded = []( const QString & input ) -> QString
   {
     // play it safe and escape everything UNLESS it's purely alphanumeric characters (and a very select scattering of other common characters!)
-    const thread_local QRegularExpression nonAlphaNumericRx( QStringLiteral( "[^a-zA-Z0-9.\\-/_]" ) );
+    const QRegularExpression nonAlphaNumericRx( QStringLiteral( "[^a-zA-Z0-9.\\-/_]" ) );
     if ( nonAlphaNumericRx.match( input ).hasMatch() )
     {
       QString escaped = input;
--- a/src/core/qgsogrutils.cpp
+++ b/src/core/qgsogrutils.cpp
@@ -1309,7 +1309,7 @@
 
   auto convertSize = []( const QString & size, double & value, Qgis::RenderUnit & unit )->bool
   {
-    const thread_local QRegularExpression sUnitRx = QRegularExpression( QStringLiteral( "^([\\d\\.]+)(g|px|pt|mm|cm|in)$" ) );
+    const QRegularExpression sUnitRx = QRegularExpression( QStringLiteral( "^([\\d\\.]+)(g|px|pt|mm|cm|in)$" ) );
     const QRegularExpressionMatch match = sUnitRx.match( size );
     if ( match.hasMatch() )
     {
@@ -1365,7 +1365,7 @@
     if ( string.isEmpty() )
       return QColor();
 
-    const thread_local QRegularExpression sColorWithAlphaRx = QRegularExpression( QStringLiteral( "^#([0-9a-fA-F]{6})([0-9a-fA-F]{2})$" ) );
+    const QRegularExpression sColorWithAlphaRx = QRegularExpression( QStringLiteral( "^#([0-9a-fA-F]{6})([0-9a-fA-F]{2})$" ) );
     const QRegularExpressionMatch match = sColorWithAlphaRx.match( string );
     if ( match.hasMatch() )
     {
@@ -1387,7 +1387,7 @@
     convertSize( lineStyle.value( QStringLiteral( "w" ) ).toString(), lineWidth, lineWidthUnit );
 
     // if the pen is a mapinfo pen, use dedicated converter for more accurate results
-    const thread_local QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-pen-(\\d+)" ) );
+    const QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-pen-(\\d+)" ) );
     const QRegularExpressionMatch match = sMapInfoId.match( string );
     if ( match.hasMatch() )
     {
@@ -1405,7 +1405,7 @@
     const QString pattern = lineStyle.value( QStringLiteral( "p" ) ).toString();
     if ( !pattern.isEmpty() )
     {
-      const thread_local QRegularExpression sPatternUnitRx = QRegularExpression( QStringLiteral( "^([\\d\\.\\s]+)(g|px|pt|mm|cm|in)$" ) );
+      const QRegularExpression sPatternUnitRx = QRegularExpression( QStringLiteral( "^([\\d\\.\\s]+)(g|px|pt|mm|cm|in)$" ) );
       const QRegularExpressionMatch match = sPatternUnitRx.match( pattern );
       if ( match.hasMatch() )
       {
@@ -1486,7 +1486,7 @@
     const QString id = brushStyle.value( QStringLiteral( "id" ) ).toString();
 
     // if the pen is a mapinfo brush, use dedicated converter for more accurate results
-    const thread_local QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-brush-(\\d+)" ) );
+    const QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-brush-(\\d+)" ) );
     const QRegularExpressionMatch match = sMapInfoId.match( id );
     if ( match.hasMatch() )
     {
@@ -1497,7 +1497,7 @@
         return res;
     }
 
-    const thread_local QRegularExpression sOgrId = QRegularExpression( QStringLiteral( "ogr-brush-(\\d+)" ) );
+    const QRegularExpression sOgrId = QRegularExpression( QStringLiteral( "ogr-brush-(\\d+)" ) );
     const QRegularExpressionMatch ogrMatch = sOgrId.match( id );
 
     Qt::BrushStyle style = Qt::SolidPattern;
@@ -1575,7 +1575,7 @@
     const QString id = symbolStyle.value( QStringLiteral( "id" ) ).toString();
 
     // if the symbol is a mapinfo symbol, use dedicated converter for more accurate results
-    const thread_local QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-sym-(\\d+)" ) );
+    const QRegularExpression sMapInfoId = QRegularExpression( QStringLiteral( "mapinfo-sym-(\\d+)" ) );
     const QRegularExpressionMatch match = sMapInfoId.match( id );
     if ( match.hasMatch() )
     {
@@ -1592,7 +1592,7 @@
 
     std::unique_ptr< QgsMarkerSymbolLayer > markerLayer;
 
-    const thread_local QRegularExpression sFontId = QRegularExpression( QStringLiteral( "font-sym-(\\d+)" ) );
+    const QRegularExpression sFontId = QRegularExpression( QStringLiteral( "font-sym-(\\d+)" ) );
     const QRegularExpressionMatch fontMatch = sFontId.match( id );
     if ( fontMatch.hasMatch() )
     {
@@ -1646,7 +1646,7 @@
 
     if ( !markerLayer )
     {
-      const thread_local QRegularExpression sOgrId = QRegularExpression( QStringLiteral( "ogr-sym-(\\d+)" ) );
+      const QRegularExpression sOgrId = QRegularExpression( QStringLiteral( "ogr-sym-(\\d+)" ) );
       const QRegularExpressionMatch ogrMatch = sOgrId.match( id );
 
       Qgis::MarkerShape shape;
--- a/src/core/textrenderer/qgsfontmanager.cpp
+++ b/src/core/textrenderer/qgsfontmanager.cpp
@@ -50,8 +50,8 @@
 
 QString QgsFontDownloadDetails::standardizeFamily( const QString &family )
 {
-  const thread_local QRegularExpression charsToRemove( QStringLiteral( "[^a-z]" ) );
-  const thread_local QRegularExpression styleNames( QStringLiteral( "(?:normal|regular|light|bold|black|demi|italic|oblique|medium|thin)" ) );
+  const QRegularExpression charsToRemove( QStringLiteral( "[^a-z]" ) );
+  const QRegularExpression styleNames( QStringLiteral( "(?:normal|regular|light|bold|black|demi|italic|oblique|medium|thin)" ) );
 
   QString processed = family.toLower();
   processed.replace( styleNames, QString() );
@@ -1860,7 +1860,7 @@
       if ( contentDispositionFilename.isEmpty() )
       {
         const QUrl originalUrl = details.fontUrls().value( i );
-        const thread_local QRegularExpression rxExtension( QStringLiteral( "^.*\\.(\\w+?)$" ) );
+        const QRegularExpression rxExtension( QStringLiteral( "^.*\\.(\\w+?)$" ) );
         extension = rxExtension.match( originalUrl.toString() ).captured( 1 );
       }
       QString thisLicenseDetails;
--- a/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp
+++ b/src/gui/editorwidgets/qgshtmlwidgetwrapper.cpp
@@ -120,7 +120,7 @@
   mHtmlCode = htmlCode;
 
   bool ok = false;
-  const thread_local QRegularExpression expRe( QStringLiteral( R"re(expression.evaluate\s*\(\s*"(.*)"\))re" ), QRegularExpression::PatternOption::MultilineOption | QRegularExpression::PatternOption::DotMatchesEverythingOption );
+  const QRegularExpression expRe( QStringLiteral( R"re(expression.evaluate\s*\(\s*"(.*)"\))re" ), QRegularExpression::PatternOption::MultilineOption | QRegularExpression::PatternOption::DotMatchesEverythingOption );
   QRegularExpressionMatchIterator matchIt = expRe.globalMatch( mHtmlCode );
   while ( !ok && matchIt.hasNext() )
   {
--- a/src/gui/editorwidgets/qgstextwidgetwrapper.cpp
+++ b/src/gui/editorwidgets/qgstextwidgetwrapper.cpp
@@ -89,7 +89,7 @@
   mText = text;
 
   bool ok = false;
-  const thread_local QRegularExpression sRegEx( QStringLiteral( "\\[%(.*?)%\\]" ), QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption );
+  const QRegularExpression sRegEx( QStringLiteral( "\\[%(.*?)%\\]" ), QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption );
   QRegularExpressionMatchIterator matchIt = sRegEx.globalMatch( mText );
   while ( !ok && matchIt.hasNext() )
   {
