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

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"\[\[hero:([^:\]]*):?.*\]\]" test_str = ("<div id=\"HeroesChanges\">\n" " [[hero:abaddon]]\n" " [[patchnote]] Aphotic Shield cast point reduced from 0.4 to 0.3\n" " [[patchnote]] Borrowed Time scepter duration increased from 5/6/7 to 6/7/8\n" " [[patchnote]] Level 15 Talent increased from +48 Mist Coil Heal/Damage to +50\n" " [[patchnote]] Level 15 Talent changed from +6 Armor to +65 Damage\n" " [[patchnote]] Level 20 Talent changed from +80 Damage to +8 Armor\n" " [[patchnote]] Level 25 Talent increased from 375 AoE Mist Coil to 425\n" " [[shard:abaddon_aphotic_shield:shardupgrade]]\n" " [[shardnote]] Causes Mist Coil and Aphotic Shield to apply a Curse of Avernus stack on enemies. Increases base slow by 6%.\n" " [[shardvideo]]\n" " [[heroend]]\n\n" " [[hero:alchemist]]\n" " [[patchnote]] Unstable Concoction manacost reduced from 120 to 90/100/110/120\n" " [[patchnote]] Unstable Concoction cooldown reduced from 22/20/18/16 to 16\n" " [[patchnote]] Acid Spray damage increased from 15/20/25/30 to 20/25/30/35\n" " [[patchnote]] Acid Spray first damage instance is now immediate rather than after a second\n" " [[patchnote]] Gold bonus cap reduced from 18/22/26/30 to 18/21/24/27 (last hit count from 5/7/8/9 to 5/6/7/8)\n" " [[patchnote]] If an ally already has a scepter buff or the item, it refunds them based on which version they have (either 4200 or 5800). \n" " [[patchnote]] Alchemist granted scepter buffs provide the full stat bonuses.\n" " [[patchnote]] Scepter damage/spell amp bonus reduced from 30/6 to 20/5\n" " [[patchnote]] Level 20 Talent reduced from +30% Cleave to +25%\n" " [[shard:alchemist_berserk_potion:shardnew]]\n" " [[shardnote]] Grants Berserk Potion. Throws a potion at the target ally, applying a basic dispel and granting +50 Attack Speed and +40 HP Regen for 10 seconds. Cast Range: 800. Cooldown: 45. Manacost: 125. Can be used on self.\n" " [[shardvideo]]\n" " [[heroend]]\n\n" " [[hero:ancient_apparition]]\n" " [[patchnote]] Ice Blast max travel time improved from 2 seconds to 1.75\n" " [[patchnote]] Chilling Touch manacost reduced from 30/50/70/90 to 30/45/60/75\n" " [[shard:ancient_apparition_ice_vortex:shardupgrade]]\n" " [[shardnote]] Causes Ice Vortex to deal 40 DPS and reduces attack speed by 20.\n" " [[shardvideo]]\n" " [[heroend]]\n\n" " [[hero:antimage:scepterreworked]]\n" " [[patchnote]] Mana Break max burn reduced from 1/2/3/4% to 1/1.8/2.6/3.4%\n" " [[patchnote]] Level 15 Talent changed from +12 Agility to +8 Armor\n" " [[patchnote]] Level 15 Talent reduced from +325 Blink Cast Range to +300\n" " [[patchnote]] Level 20 Talent changed from Blink Uncontrollable Illusion to +0.1 Mana Void Damage Multiplier\n" " [[patchnote]] <span class=\"reworked-scepter\">Scepter Rework:</span> Now grants Blink Fragment. Blinks an illusion at the target enemy or location and attacks them for 7 seconds. Uses Blink's Cast Range. Illusion cannot be controlled, deals 50% damage, takes 250%. Casting Counterspell also casts it on the Fragment illusion. Cooldown: 20. Manacost: 50\n" " [[shard:antimage_counterspell:shardupgrade]]\n" " [[shardnote]] Successful Counterspell creates an illusion attacking the caster for 5 seconds. Removes Counterspell manacost.\n" " [[shardvideo]]\n" " [[heroend]]") matches = re.finditer(regex, test_str, re.MULTILINE) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

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 Python, please visit: https://docs.python.org/3/library/re.html