Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

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

/
/
gm

Test String

Code Generator

Generated Code

#include <StringConstants.au3> ; to declare the Constants of StringRegExp #include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate Local $sRegex = "(?m) "name": "(.+)",(.*)|"endpoint": "(.*\..*)"," Local $sString = "" & @CRLF & _ " "name": "Arkane Network"," & @CRLF & _ "" & @CRLF & _ "" & @CRLF & _ " "endpoint": "app.arkane.network "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "connect.arkane.network "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login.arkane.network"," & @CRLF & _ "" & @CRLF & _ "" & @CRLF & _ " "name": "Bpost2"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.bpost2.be"," & @CRLF & _ "" & @CRLF & _ " "name": "Brussels Airlines"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "bprofile.brusselsairlines.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.brusselsairlines.com"," & @CRLF & _ "" & @CRLF & _ " "name": "De Morgen"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "abonnement.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login2.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "myaccount.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "shop.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.demorgen.be"," & @CRLF & _ "" & @CRLF & _ " "name": "Delen Private Bank"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "api.digital.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "api.digital.delen.lu "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "app.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "app.delen.ch "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "app.delen.lu "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "auth.digital.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "auth.digital.delen.lu "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "be.delen.digital"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login.delen.ch "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login.delen.lu "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "login.oyens.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "status.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "sts.delen.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.cadelam.be "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.cadelux.lu/en "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.delen.be/en "," & @CRLF & _ "" & @CRLF & _ " "name": "EURid"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.das.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.dns.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.eurid.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.nic.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.registry.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.whois.eu"," & @CRLF & _ "" & @CRLF & _ " "name": "GULP"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.gulp-shop.de"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.gulp.ch"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.gulp.de"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "demo.tendertracker.de"," & @CRLF & _ "" & @CRLF & _ " "name": "Hardware Info"," & @CRLF & _ "" & @CRLF & _ " "endpoint": " *.hardware.info "," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.hwigroup.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.hwigroup.net "," & @CRLF & _ "" & @CRLF & _ " "name": "Hoplr"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.hoplr.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.hoplr.*"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "com.hoplr"," & @CRLF & _ "" & @CRLF & _ " "name": "IAM KU Leuven"," & @CRLF & _ "" & @CRLF & _ " "endpoint": " account.kuleuven.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": " idp.kuleuven.be"," & @CRLF & _ "" & @CRLF & _ " "name": "Jooki"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.jooki.rocks"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.muuselabs.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "my.jooki.rocks"," & @CRLF & _ "" & @CRLF & _ " "name": "KU Leuven - www.kuleuven.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.kuleuven.be/english/"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.kuleuven.be"," & @CRLF & _ "" & @CRLF & _ " "name": "Monster Worldwide"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.military.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.at"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.ca"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.ch"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.co.uk"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.cz"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.de"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.dk"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.es"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.eu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.fi"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.fr"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.hu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.ie"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.it"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.lu"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.no"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.pt"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monster.se"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monsterboard.nl"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.monsterpolska.pl"," & @CRLF & _ "" & @CRLF & _ " "name": "Nexuzhealth"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "mobile.nexuzhealth.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "mynexuz.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "mynexuz.be/myUZ/"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.nexuzhealth.be/en"," & @CRLF & _ "" & @CRLF & _ " "name": "Nexuzhealth Web PACS"," & @CRLF & _ "" & @CRLF & _ " "endpoint": " idp-contact.nexuzhealth.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "media.nexuzhealth.be/patient/ "," & @CRLF & _ "" & @CRLF & _ " "name": "Online enrollment for students"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "https://associatie.kuleuven.be/inschrijvingen/oli_login_50000050"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "https://webwsp.aps.kuleuven.be/sap/bc/ui5_ui5/sap/zc_oi_appl/"," & @CRLF & _ "" & @CRLF & _ " "name": "Phished"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.phished.be"," & @CRLF & _ "" & @CRLF & _ " "name": "Port of Antwerp"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.c-point.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.portofantwerp.com"," & @CRLF & _ "" & @CRLF & _ " "name": "Randstad"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.randstadrisesmart.*"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.risesmart.*"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.randstad.*"," & @CRLF & _ "," & @CRLF & _ " "name": "Red Bull"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.redbull.com"," & @CRLF & _ "" & @CRLF & _ " "name": "Sentiance"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.sentiance.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "docs.sentiance.com"," & @CRLF & _ "" & @CRLF & _ " "name": "Speakap Responsible Disclosure"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.speakap.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.speakap.io"," & @CRLF & _ "" & @CRLF & _ " "name": "Suivo"," & @CRLF & _ "" & @CRLF & _ " "endpoint": " aweb.suivo.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "asupport.suivo.com"," & @CRLF & _ "" & @CRLF & _ " "name": "Telenet - Base "," & @CRLF & _ " " & @CRLF & _ " "endpoint": "https://www2.telenet.be/nl/landing-pages/safespot"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.9lives.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.base.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.telenet.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.telenethotspot.be "," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.yelo.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.yeloplay.be"," & @CRLF & _ " " & @CRLF & _ " "name": "Tempo-Team "," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.tempo-team.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.tempo-team.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.tempo-team.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.tempo-team.*"," & @CRLF & _ " " & @CRLF & _ " "name": "Tomorrowland"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "artists.tomorrowland.com/production-website/33117"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "cognito-idp.eu-west-1.amazonaws.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "globaljourney.tomorrowland.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "mdm.weareone.world"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "my.tomorrowland.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "oneworldradio.tomorrowland.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "sp1y1tpaf1.execute-api.eu-west-1.amazonaws.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "winterpackages.tomorrowland.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.tomorrowland.com"," & @CRLF & _ " " & @CRLF & _ " "name": "Torfs"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "winkels.torfs.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.schoenentorfs.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.schoenentorfs.nl "," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.torfs.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.torfs.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.samenfittorfs.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.sterkinjeschoenen.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.torfssuppliers.be"," & @CRLF & _ " " & @CRLF & _ " "name": "Trouw"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "abonnement.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "login2.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "myaccount.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "shop.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "webwinkel.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.trouw.nl"," & @CRLF & _ " " & @CRLF & _ " "name": "Twago"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.twago.fr"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.twago.it"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.twago.com"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.twago.de"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.twago.es"," & @CRLF & _ " " & @CRLF & _ " "name": "Tweakers"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.tweakblogs.net"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.tweakers.net"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.tweakimg.net"," & @CRLF & _ " " & @CRLF & _ " "name": "UZ Leuven"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.uzleuven.be/en"," & @CRLF & _ " " & @CRLF & _ " "name": "VRT"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.canvas.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.dewarmsteweek.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.een.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.ketnet.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.klara.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.mnm.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.radio1.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.radio2.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.sporza.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.stubru.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.vrt.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "be.vrt.ketnet.ketnet"," & @CRLF & _ " " & @CRLF & _ " "name": "VTM GO"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "login2.vtm.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "myaccount.vtm.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "vtm.be/vtmgo"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "vtmgo.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.vtm.be"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "*.vtmgo.be"," & @CRLF & _ " " & @CRLF & _ " "name": "eHealth Hub VZN KUL"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hub.vznkul.be/services/intrahub/IntraHubService"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hub.vznkul.be/services/interhub/InterHubService"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hubacc.vznkul.be/services/acceptance/intrahub/IntraHubService"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hubacc.vznkul.be/services/acceptance/interhub/InterHubService"," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hub.vznkul.be/* "," & @CRLF & _ " " & @CRLF & _ " "endpoint": "hubacc.vznkul.be/*"," & @CRLF & _ "" & @CRLF & _ " "name": "iBOOD.com"," & @CRLF & _ "" & @CRLF & _ " " & @CRLF & _ " "endpoint": "www.ibood.com"," & @CRLF & _ "" & @CRLF & _ " "name": "intigriti"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.intigriti.com"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.intigriti.io"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "*.intigriti.me"," & @CRLF & _ "" & @CRLF & _ " "name": "itsme"," & @CRLF & _ "" & @CRLF & _ "" & @CRLF & _ " "endpoint": "mobileapp.itsme.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "business.itsme.be/en/"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "confluence.belgianmobileid.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "crowd.belgianmobileid.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "jira.belgianmobileid.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "merchant.itsme.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "my.itsme.be"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.belgianmobileid.be/en/"," & @CRLF & _ "" & @CRLF & _ " "endpoint": "www.itsme.be/en/"," & @CRLF & _ "" Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH) Local $aFullArray[0] For $i = 0 To UBound($aArray) -1 _ArrayConcatenate($aFullArray, $aArray[$i]) Next $aArray = $aFullArray ; Present the entire match result _ArrayDisplay($aArray, "Result")

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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm