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
No Match

r"
"
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)^(?P<disabled># *)?(?P<min>\*/\d+|\*|(?:\d+,?)+)(?: )(?P<hour>\*/\d+|\*|(?:\d+,?)+)(?: )(?P<day>\*/\d+|\*|(?:\d+,?)+)(?: )(?P<month>\*/\d+|\*|(?:\d+,?)+)(?: )(?P<dayofweek>\*/\d+|\*|(?:\d+,?)+)" Local $sString = "PATH=/home/minecraft/.virtualenvs/charfred/bin:/usr/local/bin:/bin:/usr/bin:/home/minecraft/bin:/usr/local/sbin:/usr/sbin" & @CRLF & _ "" & @CRLF & _ "# Don't touch the above, pretty please!" & @CRLF & _ "# =====================================================================" & @CRLF & _ "# === These are my jobs, they may not be pretty, but they are mine. ===" & @CRLF & _ "# =====================================================================" & @CRLF & _ "#" & @CRLF & _ "# This first one is an example job for the replacement to STC_Control:" & @CRLF & _ "#" & @CRLF & _ "# */5 * * * * spiffy status Revelation >> /home/minecraft/logs/test.log 2>&1" & @CRLF & _ "#" & @CRLF & _ "# =====================================================================" & @CRLF & _ "# Variables here! Less typing, more lazy!:" & @CRLF & _ "" & @CRLF & _ "# Paths to log directories:" & @CRLF & _ "ETERNALLOGS=/home/minecraft/logs/Eternal" & @CRLF & _ "ETERNALVIPLOGS=/home/minecraft/logs/EternalVIP" & @CRLF & _ "REVELATIONLOGS=/home/minecraft/logs/Revelation" & @CRLF & _ "ENIGMATICALOGS=/home/minecraft/logs/Enigmatica" & @CRLF & _ "BUNGEELOGS=/home/minecraft/logs/Bungee" & @CRLF & _ "BACKUPLOGS=/home/minecraft/logs/Backups" & @CRLF & _ "CHARFREDLOGS=/home/minecraft/logs/Charfred_III" & @CRLF & _ "PO3LOGS=/home/minecraft/logs/PO3" & @CRLF & _ "DDSSLOGS=/home/minecraft/logs/DDSS" & @CRLF & _ "BURIEDLOGS=/home/minecraft/logs/Buried" & @CRLF & _ "DIREWOLF147LOGS=/home/minecraft/logs/Direwolf147" & @CRLF & _ "TFCRLOGS=/home/minecraft/logs/TFCR" & @CRLF & _ "" & @CRLF & _ "# ================" & @CRLF & _ "# Real jobs below:" & @CRLF & _ "# == ~~~~~~~~~~ ==" & @CRLF & _ "" & @CRLF & _ "# -~- Start Servers on Reboot -~-" & @CRLF & _ "@reboot spiffy start Eternal >> $ETERNALLOGS/startup.log 2>&1" & @CRLF & _ "@reboot spiffy start EternalVIP >> $ETERNALVIPLOGS/startup.log 2>&1" & @CRLF & _ "@reboot spiffy start Revelation >> $REVELATIONLOGS/startup.log 2>&1" & @CRLF & _ "@reboot spiffy start Enigmatica >> $ENIGMATICALOGS/startup.log 2>&1" & @CRLF & _ "@reboot spiffy start PO3 >> $PO3LOGS/startup.log 2>&1" & @CRLF & _ "@reboot spiffy start DDSS >> $DDSSLOGS/startup.log 2>&1" & @CRLF & _ "# @reboot spiffy start Buried >> $BURIEDLOGS/startup.log 2>&1" & @CRLF & _ "# @reboot spiffy start Direwolf147 >> $DIREWOLF147/startup.log 2>&1" & @CRLF & _ "" & @CRLF & _ "# -~- Server Online Keeper -~-" & @CRLF & _ "*/15 * * * * spiffy start Eternal >> $ETERNALLOGS/failsafe.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy start EternalVIP >> $ETERNALVIPLOGS/failsafe.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy start Revelation >> $REVELATIONLOGS/failsafe.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy start Enigmatica >> $ENIGMATICALOGS/failsafe.log 2>&1" & @CRLF & _ "# */15 * * * * spiffy start PO3 >> $PO3LOGS/failsafe.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy start DDSS >> $DDSSLOGS/failsafe.log 2>&1" & @CRLF & _ "# */15 * * * * spiffy start Buried >> $BURIEDLOGS/failsafe.log 2>&1" & @CRLF & _ "# */15 * * * * spiffy start Direwolf147 >> $DIREWOLF147LOGS/failsafe.log 2>&1" & @CRLF & _ "" & @CRLF & _ "# -~- Scheduled Restarts -~-" & @CRLF & _ "0 7,19 * * * spiffy restart Revelation 10m >> $REVELATIONLOGS/restarts.log 2>&1" & @CRLF & _ "0 8,14,20,2 * * * spiffy restart Enigmatica 10m >> $ENIGMATICALOGS/restarts.log 2>&1" & @CRLF & _ "0 5,9,13,17,21,1 * * * spiffy restart DDSS 10m >> $DDSSLOGS/restarts.log 2>&1" & @CRLF & _ "30 2,8,14,20 * * * spiffy restart PO3 10m >> $PO3LOGS/restarts.log 2>&1" & @CRLF & _ "30 5,9,13,17,21,1 * * * spiffy restart Eternal 10m >> $ETERNALLOGS/restarts.log 2>&1" & @CRLF & _ "30 3,11,19 * * * spiffy restart EternalVIP 10m >> $ETERNALVIPLOGS/restarts.log 2>&1" & @CRLF & _ "" & @CRLF & _ "" & @CRLF & _ "# -~- World Backups -~-" & @CRLF & _ "# ===== Info =====" & @CRLF & _ "# Each backup takes about 4 minutes on the larger worlds and taxes one CPU core to 100%;" & @CRLF & _ "# If multiple servers are specified in the same command, they'll be done sequentially," & @CRLF & _ "# meaning that backing up 4 servers in one command will take about 16min total." & @CRLF & _ "# === End Info ===" & @CRLF & _ "0,10,20,30 0,4,8,12,16,20 * * * spiffy backup PO3 >> $BACKUPLOGS/po3.log 2>&1" & @CRLF & _ "30 0,4,8,12,16,20 * * * spiffy backup DDSS >> $BACKUPLOGS/DDSS.log 2>&1" & @CRLF & _ "# 0 1,5,9,13,17,21 * * * spiffy backup Direwolf147 >> $BACKUPLOGS/Direwolf147.log 2>&1" & @CRLF & _ "30 1,5,9,13,17,21 * * *spiffy backup Revelation >> $REVELATIONLOGS/Revelation.log 2>&1" & @CRLF & _ "# 0 2,6,10,14,18,22 * * * spiffy backup Buried >> $BACKUPLOGS/buried.log 2>&1" & @CRLF & _ "30 2,6,10,14,18,22 * * * spiffy backup Enigmatica >> $BACKUPLOGS/enigmatica.log 2>&1" & @CRLF & _ "0 3,7,11,15,19,23 * * * spiffy backup Eternal >> $BACKUPLOGS/eternal.log 2>&1" & @CRLF & _ "15 1,5,9,13,17,21 * * * spiffy backup EternalVIP >> $BACKUPLOGS/eternalvip.log 2>&1" & @CRLF & _ "" & @CRLF & _ "# -~- Quest Backups -~-" & @CRLF & _ "*/15 * * * * spiffy questbackup DDSS >> $BACKUPLOGS/quests.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy questbackup PO3 >> $BACKUPLOGS/quests.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy questbackup Enigmatica >> $BACKUPLOGS/quests.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy questbackup Eternal >> $BACKUPLOGS/quests.log 2>&1" & @CRLF & _ "*/15 * * * * spiffy questbackup EternalVIP >> $BACKUPLOGS/quests.log 2>&1" & @CRLF & _ "" & @CRLF & _ "# -~- Charfred_III related Jobs -~-" & @CRLF & _ "@reboot /home/minecraft/charloader.zsh" & @CRLF & _ "" & @CRLF & _ "# -~- inotify watcher for betterquesting -~-" & @CRLF & _ "# @reboot screen -h 100 -dmS charredobserverI /home/minecraft/directorywatchforjinspleasure.zsh" & @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