Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • Save & Share
  • 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
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

Substitution
Processing...

Code Generator

Generated Code

import re regex = re.compile(r"(<(?P<tag1>\w+)>)\n(?'tag2'[\w\<\>.]+)\n<\/(?P=tag1)>", flags=re.MULTILINE) test_str = ("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n" "<Annotations>\n" "<Version>\n" "1\n" "</Version>\n" "<Container>\n" "<PageNumber>\n" "1\n" "</PageNumber>\n" "<Size>\n" "<Width>\n" "3979.2\n" "</Width>\n" "<Height>\n" "5611.2\n" "</Height>\n" "</Size>\n" "<Offset>\n" "<X>\n" "0\n" "</X>\n" "<Y>\n" "0\n" "</Y>\n" "</Offset>\n" "<CalibrationScale>\n" "1\n" "</CalibrationScale>\n" "<IsVisible>\n" "true\n" "</IsVisible>\n" "<IsEnabled>\n" "true\n" "</IsEnabled>\n" "<UserData>\n" "</UserData>\n" "<CalibrationUnit>\n" "0\n" "</CalibrationUnit>\n" "<Objects>\n" "<OnLoad>\n" "<RotateAngle>\n" "0\n" "</RotateAngle>\n" "<ScaleX>\n" "1\n" "</ScaleX>\n" "<ScaleY>\n" "1\n" "</ScaleY>\n" "<Offset>\n" "<X>\n" "0\n" "</X>\n" "<Y>\n" "0\n" "</Y>\n" "</Offset>\n" "</OnLoad>\n" "<Object>\n" "<ObjectType>\n" "Leadtools.Annotations.Engine.AnnStampObject\n" "</ObjectType>\n" "<AssemblyName>\n" "Leadtools.Annotations.Engine\n" "</AssemblyName>\n" "<OnLoad>\n" "<RotateAngle>\n" "0\n" "</RotateAngle>\n" "<ScaleX>\n" "1\n" "</ScaleX>\n" "<ScaleY>\n" "1\n" "</ScaleY>\n" "<Offset>\n" "<X>\n" "0\n" "</X>\n" "<Y>\n" "0\n" "</Y>\n" "</Offset>\n" "</OnLoad>\n" "<IsVisible>\n" "true\n" "</IsVisible>\n" "<IsSelected>\n" "false\n" "</IsSelected>\n" "<IsLocked>\n" "false\n" "</IsLocked>\n" "<Password>\n" "</Password>\n" "<GroupName/>\n" "<Hyperlink/>\n" "<FixedStateOperations>\n" "8\n" "</FixedStateOperations>\n" "<RotateGripper>\n" "240\n" "</RotateGripper>\n" "<RotateCenter>\n" "<X>\n" "NaN\n" "</X>\n" "<Y>\n" "NaN\n" "</Y>\n" "</RotateCenter>\n" "<Points>\n" "<Point>\n" "<X>\n" "2400\n" "</X>\n" "<Y>\n" "741.6\n" "</Y>\n" "</Point>\n" "<Point>\n" "<X>\n" "4029.6\n" "</X>\n" "<Y>\n" "741.6\n" "</Y>\n" "</Point>\n" "<Point>\n" "<X>\n" "4029.6\n" "</X>\n" "<Y>\n" "1380\n" "</Y>\n" "</Point>\n" "<Point>\n" "<X>\n" "2400\n" "</X>\n" "<Y>\n" "1380\n" "</Y>\n" "</Point>\n" "</Points>\n" "<Fill/>\n" "<Labels>\n" "<Label>\n" "<Key>\n" "AnnObjectName\n" "</Key>\n" "<IsVisible>\n" "false\n" "</IsVisible>\n" "<LabelRestriction>\n" "0\n" "</LabelRestriction>\n" "<Text/>\n" "<OriginalPosition>\n" "<X>\n" "2400\n" "</X>\n" "<Y>\n" "741.6\n" "</Y>\n" "</OriginalPosition>\n" "<Offset>\n" "<X>\n" "NaN\n" "</X>\n" "<Y>\n" "NaN\n" "</Y>\n" "</Offset>\n" "<Background/>\n" "<Foreground>\n" "<SolidColorBrush>\n" "<Color>\n" "Transparent \n" "</Color>\n" "</SolidColorBrush>\n" "</Foreground>\n" "<Font>\n" "<FamilyName>\n" "Arial\n" "</FamilyName>\n" "<Size>\n" "11\n" "</Size>\n" "<Stretch>\n" "Normal\n" "</Stretch>\n" "<Weight>\n" "Normal\n" "</Weight>\n" "<Style>\n" "Normal\n" "</Style>\n" "<TextDecoration>\n" "0\n" "</TextDecoration>\n" "</Font>\n" "<OffsetHeight>\n" "true\n" "</OffsetHeight>\n" "</Label>\n" "</Labels>\n" "<Stroke>\n" "<Fill>\n" "<SolidColorBrush>\n" "<Color>\n" "Transparent\n" "</Color>\n" "</SolidColorBrush>\n" "</Fill>\n" "<Thickness>\n" "0\n" "</Thickness>\n" "<MiterLimit>\n" "0\n" "</MiterLimit>\n" "<DashCap>\n" "Flat\n" "</DashCap>\n" "<StartLineCap>\n" "Round\n" "</StartLineCap>\n" "<EndLineCap>\n" "Round\n" "</EndLineCap>\n" "<LineJoin>\n" "Round\n" "</LineJoin>\n" "<DashOffset>\n" "0\n" "</DashOffset>\n" "<Dashes/>\n" "<StrokeAlignment>\n" "Center\n" "</StrokeAlignment>\n" "</Stroke>\n" "<SelectionStroke>\n" "<Fill>\n" "<SolidColorBrush>\n" "<Color>\n" "Blue\n" "</Color>\n" "</SolidColorBrush>\n" "</Fill>\n" "<Thickness>\n" "4\n" "</Thickness>\n" "<MiterLimit>\n" "0\n" "</MiterLimit>\n" "<DashCap>\n" "Flat\n" "</DashCap>\n" "<StartLineCap>\n" "Round\n" "</StartLineCap>\n" "<EndLineCap>\n" "Round\n" "</EndLineCap>\n" "<LineJoin>\n" "Round\n" "</LineJoin>\n" "<DashOffset>\n" "0\n" "</DashOffset>\n" "<Dashes/>\n" "<StrokeAlignment>\n" "Center\n" "</StrokeAlignment>\n" "</SelectionStroke>\n" "<Font>\n" "<FamilyName>\n" "Arial\n" "</FamilyName>\n" "<Size>\n" "11\n" "</Size>\n" "<Stretch>\n" "Normal\n" "</Stretch>\n" "<Weight>\n" "Normal\n" "</Weight>\n" "<Style>\n" "Normal\n" "</Style>\n" "<TextDecoration>\n" "0\n" "</TextDecoration>\n" "</Font>\n" "<ObjectId>\n" "-16\n" "</ObjectId>\n" "<ObjectTag/>\n" "<Metadata>\n" "<Item>\n" "<Key>\n" "Subject\n" "</Key>\n" "<Value>\n" "Annotate_1 \n" "</Value>\n" "</Item>\n" "<Item>\n" "<Key>\n" "Author\n" "</Key>\n" "<Value>\n" "Author1\n" "</Value>\n" "</Item>\n" "<Item>\n" "<Key>\n" "Modified\n" "</Key>\n" "<Value>\n" "2021-03-04 21:50:12\n" "</Value>\n" "</Item>\n" "<Item>\n" "<Key>\n" "Title\n" "</Key>\n" "<Value>\n" "cvadmin \n" "</Value>\n" "</Item>\n" "<Item>\n" "<Key>\n" "Content\n" "</Key>\n" "<Value>\n" "SIGN_cvadmin 3/4/2021 9:49:54 PM\n" "</Value>\n" "</Item>\n" "<Item>\n" "<Key>\n" "Created\n" "</Key>\n" "<Value>\n" "2021-03-04 21:50:12\n" "</Value>\n" "</Item>\n" "</Metadata>\n" "<Reviews/>\n" "<UserId/>\n" "<LayerId/>\n" "<Opacity>\n" "1\n" "</Opacity>\n" "<Picture>\n" "<PictureData>\n" "Null\n" "</PictureData>\n" "<PictureSource>\n" "D:/GitLeadtools20And21MergedWorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/CVWeb/Temp/Apurba DB/272/12102/2.png\n" "</PictureSource>\n" "<PictureWidth>\n" "4710.973077661264\n" "</PictureWidth>\n" "<PictureHeight>\n" "1295.5175963568474\n" "</PictureHeight>\n" "</Picture>\n" "</Object>\n" "</Objects>\n" "</Container>\n" "</Annotations>") subst = "<${tag1}>\\n\\t${tag2}\\n</${tag1}>" result = regex.sub(subst, test_str) if result: print(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 Python, please visit: https://docs.python.org/3/library/re.html