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

/
/
gmi

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" <a id=\"(.*?)<\/a>" test_str = ("{% comment %} \n" "Use this template to create the Appian_Release_Notes.md page for each new version of Appian. Any changes to this template should be discussed with the Information Development team. \n" "{% endcomment %}\n\n" "New features are described below in detail. Behavior changes, resolved issues, deprecations, and removals are called out their own sections.\n\n" "{% comment %} \n" "### <a id=\"Example_New_Feature\"></a> Example New Feature ###\n\n" "This is a short description of the new feature. Group two or more closely related features using a common section with h4 subsections. Link to associated documentation as shown below (based on the number of links).\n\n" "See also: [Associated Documentation](Associated_Documentation.md)\n\n" "See also: [Associated Documentation](Associated_Documentation.md) and [Associated Documentation](Associated_Documentation.md)\n\n" "See also: [Associated Documentation](Associated_Documentation.md), [Associated Documentation](Associated_Documentation.md), and [Associated Documentation](Associated_Documentation.md)\n" "{% endcomment %}\n\n\n" "## <a id=\"User_Interfaces\"></a> User Interfaces ##\n\n" "This section describes new features for user interfaces, including Tempo, sites, and embedded interfaces.\n\n" "### Sites Revolution ###\n\n" "#### <a id=\"Tempo_Reports_in_Sites\"></a> Tempo Reports in Sites ###\n\n" "In addition to task reports, actions and record types, designers can now configure sites to have Tempo reports. Making it easier for sites only users to view and analyze data.\n\n" "<img class=\"screenshot\" src=\"images/release_notes/SitesTempoReports.png\"/>\n\n" "[configure sites with reports](Sites.md#Configure_a_Site_Page).\n\n" "#### <a id=\"Inline_Task_Management\"></a> Inline Task Management ###\n\n" "Task management has improved for users of all Appian user environments. All task management controls for SAIL [tasks](Tasks.md), including save changes, reassign, and reject, have been moved to above the task form.\n\n" "The left-hand navigation bar no longer appears in Tempo when viewing SAIL tasks, allowing task forms to occupy the full page width.\n\n" "These task management controls are now available to [sites](Sites.md) users for the first time.\n\n" "Users of [embedded](Embedded_Interfaces.md) tasks now have the option to save changes to SAIL tasks.\n\n" "<img src=\"images/release_notes/InlineTaskControls.png\" class=\"screenshot\"/>\n\n\n" "#### <a id=\"User_Record_in_Sites\"></a> User Record in Sites ###\n\n" "We have made it possible for designers to configure the User record and User record links in sites.\n\n" "<img class=\"screenshot\" src=\"images/release_notes/SitesUserRecord.png\"/>\n\n" "#### <a id=\"User_Profile_in_Sites\"></a> User Profile in Sites ###\n\n" "Users can now update their profiles in a site by clicking on their avatar in the header and clicking on the Profile button. \n\n" "<img class=\"screenshot\" src=\"images/release_notes/SitesUserProfile.png\"/>\n\n" "#### Wider Sites ###\n") matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE) 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