Save & Share

  • Current Version: 1
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
Processing...

Test String

Code Generator

Generated Code

package main import ( "regexp" "fmt" ) func main() { var re = regexp.MustCompile(`(?m)[^#]wfLoadExtension\(\s*'(?<name>\S+)'\s*\);(?<comment>[^\n]*)\n`) var str = `# Protect against web entry if ( !defined( 'MEDIAWIKI' ) ) { exit; } #Debug Settings if ( getenv( 'MW_SHOW_EXCEPTION_DETAILS' ) === 'true' ) { # error_reporting( -1 ); # ini_set( 'display_errors', 1 ); # $wgShowExceptionDetails = true; } ########################### Core Settings ########################## #local time zone # we have to use "UTC" here, otherwise SMW stores time values with reference to the local time zone # see also: https://www.semantic-mediawiki.org/wiki/Help:Type_Date $wgLocaltimezone = "UTC"; #$wgLocaltimezone = getenv( 'MW_TIME_ZONE' ); # instead we store the timezone param as default user timezone setting # the offset is dynamically calculated, e.g. 'ZoneInfo|120|Europe/Berlin'; date_default_timezone_set('UTC'); $wgDefaultUserOptions['timecorrection'] = 'ZoneInfo|' . timezone_offset_get( new DateTimeZone( getenv( 'MW_TIME_ZONE' ) ), new DateTime( 'now', new DateTimeZone( getenv( 'MW_TIME_ZONE' ) ) ) ) / 60 . '|' . getenv( 'MW_TIME_ZONE' ); # Site language code, should be one of the list in ./languages/Names.php # we have to use 'en' here for technical reasons (namespace and smw property names) $wgLanguageCode = 'en'; # instead, we set the lang param as default user interface lang # see also: https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions $wgDefaultUserOptions['language'] = getenv( 'MW_SITE_LANG' ); # we have to override the options loading to apply our defaults # https://www.mediawiki.org/wiki/Manual_talk:$wgDefaultUserOptions#Setting_$wgDefaultUserOptions['language']_=_'de';_fails $wgHooks['LoadUserOptions'][] = function( $user, array &$options ) use ($wgDefaultUserOptions) { # lookup explicite user settings $dbr = wfGetDB( DB_MASTER ); $res = $dbr->select( 'user_properties', [ 'up_property', 'up_value' ], [ 'up_user' => $user->getId() ], ); $data = []; foreach ( $res as $row ) { if ( $row->up_value === '0' ) { $row->up_value = 0; } $data[$row->up_property] = $row->up_value; } # apply default timezone if not set if (!array_key_exists('timecorrection', $data)) $options['timecorrection'] = $wgDefaultUserOptions['timecorrection']; # apply default language if not set //if (!array_key_exists('language', $data)) $options['language'] = $wgDefaultUserOptions['language']; // does not work with Extension:ULS, prevents changing the language via settings }; #$wgHooks['UserGetLanguageObject'][] = function( $user, &$code ) { # $code = $user->getOption( 'language' ); #}; ## The protocol and server name to use in fully-qualified URLs => set in Custom settings $wgServer = getenv( 'MW_SITE_SERVER' ); # The name of the site. This is the name of the site as displayed throughout the site. $wgSitename = getenv( 'MW_SITE_NAME' ); # Default skin: you can change the default skin. Use the internal symbolic # names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector', 'chameleon': wfLoadExtension( 'Bootstrap' ); $wgDefaultSkin = getenv( 'MW_DEFAULT_SKIN' ); $wgCitizenTableNowrapClasses[] = 'info_box'; # disable wrapping of info_box tables $wgCitizenSearchGateway = "smwAskApi"; $wgCitizenSearchSmwApiAction = "compoundquery"; $wgCitizenSearchSmwAskApiQueryTemplate = " [[HasNormalizedLabel::\${input_normalized}]][[HasOswId::!~*#*]];?HasLabel=displaytitle;?HasImage=thumbnail;?HasDescription=desc;limit=1 |[[HasNormalizedLabel::~*\${input_normalized_tokenized}*]][[HasOswId::!~*#*]];?HasLabel=displaytitle;?HasImage=thumbnail;?HasDescription=desc;limit=7 "; # InstantCommons allows wiki to use images from http://commons.wikimedia.org $wgUseInstantCommons = getenv( 'MW_USE_INSTANT_COMMONS' ); # Name used for the project namespace. The name of the meta namespace (also known as the project namespace), used for pages regarding the wiki itself. #$wgMetaNamespace = 'Site'; #just an alias. does not work at all of canonical namespace 'project' is created / used by an extension #$wgMetaNamespaceTalk = 'Site_talk'; # The relative URL path to the logo. Make sure you change this from the default, # or else you'll overwrite your logo when you upgrade! # logos should actually have different sizes, see https://www.mediawiki.org/wiki/Manual:$wgLogos $wgLogos = [ '1x' => "$wgScriptPath/logo.png", '1.5x' => "$wgScriptPath/logo.png", '2x' => "$wgScriptPath/logo.png", 'svg' => "$wgScriptPath/logo.svg" ]; # The URL of the site favicon (the small icon displayed next to a URL in the address bar of a browser) $wgFavicon = "$wgScriptPath/favicon.ico"; ##### Short URLs ## https://www.mediawiki.org/wiki/Manual:Short_URL $wgArticlePath = '/wiki/$1'; ## Also see mediawiki.conf ##### Improve performance # https://www.mediawiki.org/wiki/Manual:$wgMainCacheType switch ( getenv( 'MW_MAIN_CACHE_TYPE' ) ) { case 'CACHE_ACCEL': # APC has several problems in latest versions of MediaWiki and extensions, for example: # https://www.mediawiki.org/wiki/Extension:Flow#.22Exception_Caught:_CAS_is_not_implemented_in_Xyz.22 $wgMainCacheType = CACHE_ACCEL; $wgSessionCacheType = CACHE_DB; #This may cause problems when CACHE_ACCEL is used break; case 'CACHE_DB': $wgMainCacheType = CACHE_DB; break; case 'CACHE_DB': $wgMainCacheType = CACHE_DB; break; case 'CACHE_ANYTHING': $wgMainCacheType = CACHE_ANYTHING; break; case 'CACHE_MEMCACHED': # Use Memcached, see https://www.mediawiki.org/wiki/Memcached $wgMainCacheType = CACHE_MEMCACHED; $wgParserCacheType = CACHE_MEMCACHED; # optional $wgMessageCacheType = CACHE_MEMCACHED; # optional $wgMemCachedServers = explode( ',', getenv( 'MW_MEMCACHED_SERVERS' ) ); $wgSessionsInObjectCache = true; # optional $wgSessionCacheType = CACHE_MEMCACHED; # optional break; default: $wgMainCacheType = CACHE_NONE; } #The path of the temporary directory. see https://www.mediawiki.org/wiki/Manual:$wgTmpDirectory $wgTmpDirectory = $IP . '/images/temp'; $wgCacheDirectory = $IP . '/cache'; ########################### Search ############################ wfLoadExtension( 'Elastica' ); wfLoadExtension( 'CirrusSearch' ); $wgCirrusSearchServers = explode( ',', getenv( 'MW_CIRRUS_SEARCH_SERVERS' ) ); $wgSearchType = 'CirrusSearch'; //manual fetch a property from the db and index it (does not work as expected) /*$wgHooks['CirrusSearchBuildDocumentParse'][] = function( \Elastica\Document $doc, Title $title, Content $content, ParserOutput $parserOutput ) { //fetch displaytitle from db $dbr = wfGetDB( DB_REPLICA ); $displayTitle = $dbr->selectField( 'page_props', 'pp_value', array( 'pp_propname' => 'displaytitle', 'pp_page' => $title->getArticleId() ), __METHOD__ ); if ( $displayTitle === null || trim($displayTitle) === '' )$doc_title = $title->getText(); else $doc_title = $displayTitle . ' ' . $title->getText(); //echo $doc_title . "\n"; //store displaytitle as title in elastic search document $doc->set( 'display_title', $doc_title ); //$doc->set( 'title', $doc_title ); };*/ //$wgCirrusSearchPrefixSearchStartsWithAnyWord = true; //Is it ok if the prefix starts on any word in the title or just the first word? //only in recent version of cirrus MW>1.35 #$wgCirrusSearchCustomPageFields = [ # 'display_title' => 'short_text' #]; //Register display_title as index $wgHooks['SearchIndexFields'][] = function( array &$fields, SearchEngine $engine ) { #$engine->Xtes(); if ( !( $engine instanceof CirrusSearch\CirrusSearch ) ) { return; } $fields['display_title'] = $engine->makeSearchFieldMapping( 'display_title', 'short_text' ); }; //rank display_title higher than title $wgCirrusSearchWeights = [ 'title' => 20, 'display_title' => 50, 'redirect' => 15, 'category' => 8, 'heading' => 5, 'opening_text' => 3, 'text' => 1, 'auxiliary_text' => 0.5, 'file_text' => 0.5, ]; $wgCirrusSearchPrefixWeights = [ 'title' => 10, 'display_title' => 30, 'redirect' => 1, 'title_asciifolding' => 7, 'redirect_asciifolding' => 0.7, ]; //allow fuzzy search and "do you mean" suggestions //see also https://www.mediawiki.org/w/index.php?title=Topic:Wj3av65bti5a8v7o&topic_showPostId=wj6z0ty2ut72b3hw#flow-post-wj6z0ty2ut72b3hw $wgCirrusSearchPhraseSuggestUseText = true; //rebuild index with /* php /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php --startOver php /var/www/html/w/extensions/CirrusSearch/maintenance/ForceSearchIndex.php php /var/www/html/w/maintenance/runJobs.php */ //alternative SMWSearch #$wgSearchType = 'SMWSearch'; #$smwgFallbackSearchType = function() { # return new CirrusSearch\CirrusSearch(); #}; // The two next parameters are recommended to highlight excerpts #$smwgElasticsearchConfig['query']['highlight.fragment']['type'] = 'plain'; // or 'unified' or 'fvh' #$smwgElasticsearchConfig['indexer']['raw.text'] = true; ########################### VisualEditor ########################### wfLoadExtension( 'VisualEditor' ); // Enable by default for everybody $wgDefaultUserOptions['visualeditor-enable'] = 1; // Use Visual editor in PageForms wfLoadExtension( 'VEForAll' ); // Optional: Set VisualEditor as the default for anonymous users // otherwise they will have to switch to VE $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor"; // Don't allow users to disable it $wgHiddenPrefs[] = 'visualeditor-enable'; // OPTIONAL: Enable VisualEditor's experimental code features $wgDefaultUserOptions['visualeditor-enable-experimental'] = 1; //Whether to allow users to enable the section editing. $wgVisualEditorEnableVisualSectionEditing = true; //Whether to enable VisualEditor for every new account. $wgVisualEditorAutoAccountEnable = true; //Whether to enable the wikitext source mode inside VisualEditor. $wgVisualEditorEnableWikitext = true; $wgDefaultUserOptions['visualeditor-newwikitext'] = 1; //Whether to enable the visual diff function on the history special page. $wgVisualEditorEnableDiffPage = true; wfLoadExtension( 'Math' ); # bundled in REL1_39 wfLoadExtension( 'CodeMirror' ); des ############ Multimedia & Editors ############ ## Other Editors wfLoadExtension( 'DrawioEditor' ); $wgDrawioEditorBackendUrl = getenv( 'DRAWIO_SERVER' ); ######################### Page Forms ################### wfLoadExtension( 'PageForms' ); ############## Uploads ##################### $wgEnableUploads = getenv( 'MW_ENABLE_UPLOADS' ); ####################### Bundled extensions ######################### #wfLoadExtension( 'AbuseFilter' ); wfLoadExtension( 'CategoryTree' ); wfLoadExtension( 'Cite' ); wfLoadExtension( 'CiteThisPage' ); wfLoadExtension( 'CodeEditor' ); $wgDefaultUserOptions['usebetatoolbar'] = 1; // user option provided by WikiEditor extension #wfLoadExtension( 'ConfirmEdit' ); //not needed for private wiki wfLoadExtension( 'Gadgets' ); wfLoadExtension( 'ImageMap' ); wfLoadExtension( 'InputBox' ); wfLoadExtension( 'Interwiki' ); $wgGroupPermissions['sysop']['interwiki'] = true; // To grant sysops permissions to edit interwiki data #$wgEnableScaryTranscluding = true; //To enable transclusion from other sites #wfLoadExtension( 'Math' ); # bundled in REL1_39 but customized wfLoadExtension( 'MultimediaViewer' ); $wgMediaViewerEnableByDefault = false; //to enable direct download of files wfLoadExtension( 'Nuke' ); #wfLoadExtension( 'OATHAuth' ); wfLoadExtension( 'PageImages' ); wfLoadExtension( 'ParserFunctions' ); $wgPFEnableStringFunctions = true; wfLoadExtension( 'PdfHandler' ); wfLoadExtension( 'Poem' ); wfLoadExtension( 'Renameuser' ); wfLoadExtension( 'ReplaceText' ); $wgGroupPermissions['bureaucrat']['replacetext'] = true; #wfLoadExtension( 'Scribunto' ); # bundled in REL1_39 but customized wfLoadExtension( 'SecureLinkFixer' ); #wfLoadExtension( 'SpamBlacklist' ); //not needed for private wiki wfLoadExtension( 'SyntaxHighlight_GeSHi' ); #$wgPygmentizePath = '/usr/bin/pygmentize'; wfLoadExtension( 'TemplateData' ); wfLoadExtension( 'TextExtracts' ); wfLoadExtension( 'TitleBlacklist' ); #wfLoadExtension( 'VisualEditor' ); # bundled in REL1_39 but customized wfLoadExtension( 'WikiEditor' ); ##### Non-bundled Core Extensions #### wfLoadExtension( 'MyVariables' ); #additional variables like USERLANGUAGECODE ########### Semantic Mediawiki ############### wfLoadExtension( 'SemanticMediaWiki' ); #strip protocol from MW_SITE_SERVER enableSemantics( preg_replace( "#^[^:/.]*[:/]+#i", "", getenv( 'MW_SITE_SERVER' ) ) ); #$smwgChangePropagationProtection = false; #temp fix to restore locked pages $smwgQMaxSize = 50; #increase max query conditions, default 12 $smwgQMaxDepth = 20; #increase property chain query limit, default 4 $maxRecursionDepth = 5; #increase limit of nested templates in query results, default 2 $smwgDefaultStore = 'SMWSparqlStore'; $smwgSparqlRepositoryConnector = 'blazegraph'; $smwgSparqlEndpoint["query"] = 'http://graphdb:9999/blazegraph/namespace/kb/sparql'; $smwgSparqlEndpoint["update"] = 'http://graphdb:9999/blazegraph/namespace/kb/sparql'; $smwgSparqlEndpoint["data"] = ''; # Optional name of default graph $smwgSparqlDefaultGraph = getenv( 'MW_SITE_SERVER' ) . '/id/'; # Namespace for export $smwgNamespace = getenv( 'MW_SITE_SERVER' ) . '/id/'; #needs rebuild: php /var/www/html/w/extensions/SemanticMediaWiki/maintenance/rebuildData.php #$smwgShowFactbox = SMW_FACTBOX_NONEMPTY; #Show factboxes only if they have some content #$smwgShowFactbox = SMW_FACTBOX_SHOWN; #Enable the factbox to be always shown - has no effect? $smwgShowFactbox = SMW_FACTBOX_HIDDEN; #Never show it wfLoadExtension( 'SemanticResultFormats' ); wfLoadExtension( 'SemanticCompoundQueries' ); #Enable Semantic NS $smwgNamespacesWithSemanticLinks[NS_MAIN] = true; $smwgNamespacesWithSemanticLinks[NS_USER] = true; $smwgNamespacesWithSemanticLinks[NS_PROJECT] = true; $smwgNamespacesWithSemanticLinks[NS_FILE] = true; $smwgNamespacesWithSemanticLinks[NS_TEMPLATE] = true; $smwgNamespacesWithSemanticLinks[NS_HELP] = true; $smwgNamespacesWithSemanticLinks[NS_CATEGORY] = true; #some NS need hardcoded IDs, see https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/5281 $smwgNamespacesWithSemanticLinks[102] = true; # SMW_NS_PROPERTY $smwgNamespacesWithSemanticLinks[114] = true; # SMW_NS_SCHEMA $smwgNamespacesWithSemanticLinks[108] = true; # SMW_NS_CONCEPT $smwgNamespacesWithSemanticLinks[690] = true; #Action $smwgNamespacesWithSemanticLinks[692] = true; #Label ############# Slots ############ wfLoadExtension( 'WSSlots' ); $wgWSSlotsDefaultSlotRoleLayout = [ "display" => "none", "region" => "center", "placement" => "append" ]; $wgWSSlotsDefinedSlots = [ "jsonschema" => ["content_model" => "json", "slot_role_layout" => [ "region" => "footer", "display" => "details"]], "jsondata" => ["content_model" => "json", "slot_role_layout" => [ "region" => "footer", "display" => "details"]], "schema_template" => ["content_model" => "text", "slot_role_layout" => [ "display" => "none"]], "data_template" => ["content_model" => "wikitext", "slot_role_layout" => [ "display" => "none"]], "header_template" => ["content_model" => "wikitext", "slot_role_layout" => [ "display" => "none"]], "footer_template" => ["content_model" => "wikitext", "slot_role_layout" => [ "display" => "none"]], "header" => [ "content_model" => "wikitext", "slot_role_layout" => [ "display" => "plain", "region" => "header", "placement" => "prepend" ] ], "footer" => [ "content_model" => "wikitext", "slot_role_layout" => [ "display" => "plain", "region" => "footer", "placement" => "prepend" ] ], ]; $wgWSSlotsSemanticSlots = [ "data_template", "header" ]; $wgWSSlotsDoPurge = true; $wgWSSlotsOverrideActions = false; ############# Scribunto ############# wfLoadExtension( 'Scribunto' ); //bundled $wgScribuntoDefaultEngine = 'luastandalone'; $wgScribuntoUseGeSHi = true; $wgScribuntoUseCodeEditor = true; wfLoadExtension( 'SemanticScribunto' ); ########### CommentStreams ############### # wfLoadExtension( 'CommentStreams' ); # not enabled by default # $wgCommentStreamsEnableVoting = true; # $wgCommentStreamsSuppressLogsFromRCs = false; # $wgCommentStreamsAllowedNamespaces = []; # not enable by default in any namespace ######################## UI ############################# wfLoadExtension( 'DisplayTitle' ); $wgAllowDisplayTitle = true; $wgRestrictDisplayTitle = false; wfLoadExtension( 'SimpleBatchUpload' ); ####################### Custom Extensions #################### wfLoadExtension( 'FileApi' ); wfLoadExtension( 'MwJson' ); $wgMwJsonSlotRenderResultTransformation = [ "enabled" => true, ]; wfLoadExtension( 'OpenSemanticLab' ); $wgExtraSignatureNamespaces = [7100]; #allow signatures in NS LabNote wfLoadExtension( 'SemanticProperties' ); wfLoadExtension( 'WellplateEditor' ); wfLoadExtension( 'SvgEditor' ); wfLoadExtension( 'SpreadsheetEditor' ); wfLoadExtension( 'ChemEditor' ); wfLoadExtension( 'InteractiveSemanticGraph' ); wfLoadExtension( 'InteractiveSemanticGraph2' ); wfLoadExtension( 'SciFileHandler' ); $wgFileExtensions = array_merge($wgFileExtensions, array( 'hdf', 'h4', 'hdf4', 'he2', 'h5', 'hdf5', 'he5', # HDF File format 'dx', 'jdx', 'jcm', # JCAMP-DX 'mpr', 'mps', 'mpt', # Biologic )); #wfLoadExtension( 'Chatbot' ); ####################### Custom Content ##################### wfLoadExtension( 'PageExchange' ); $wgPageExchangeFileDirectories[] = 'https://raw.githubusercontent.com/OpenSemanticLab/PagePackages/main/package_index.txt'; $wgPageImagesNamespaces[] = 7000; $wgPageImagesNamespaces[] = NS_CATEGORY; $sespgEnabledPropertyList = [ '_PAGEIMG', ]; $wgCitizenTableNowrapClasses[] = 'layout-table'; # disable wrapping of layout-table tables` for i, match := range re.FindAllString(str, -1) { fmt.Println(match, "found at index", i) } }

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/