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"\ {0,1}([A-Za-z]*)\t([0-9]*)", flags=re.MULTILINE) test_str = ("74572: Blaufelden\n" " Alkertshausen\n" " Billingsbach\n" " Blaubach\n" " Blaufelden\n" " Brüchlingen\n" " Ehringshausen\n" " Emmertsbühl\n" " Engelhardshausen\n" " Erpfersweiler\n" " Gammesfeld\n" " Herrentierbach\n" " Heufelwinden\n" " Kottmannsweiler\n" " Lentersweiler\n" " Metzholz\n" " Mittelbach\n" " Naicha\n" " Niederweiler\n" " Raboldshausen\n" " Saalbach\n" " Simmetshausen\n" " Wiesenbach\n" " Wittenweiler\n\n" "74575: Schrozberg\n" " Bartenstein\n" " Böhmweiler\n" " Bossendorf\n" " Bovenzenweiler\n" " Eichholz\n" " Eichswiesen\n" " Enzenweiler\n" " Ettenhausen\n" " Funkstatt\n" " Ganertshausen\n" " Gemmhagen\n" " Großbärenweiler\n" " Gütbach\n" " Hechelein\n" " Heiligenbronn\n" " Heuchlingen\n" " Hirschbronn\n" " Hornungshof\n" " Hummertsweiler\n" " Kälberbach\n" " Kleinbärenweiler\n" " Klopfhof\n" " Könbronn\n" " Krailshausen\n" " Kreuzfeld\n" " Leuzendorf\n" " Lindlein\n" " Mäusberg\n" " Obereichenrot\n" " Reichertswiesen\n" " Reupoldsrot\n" " Riedbach\n" " Schmalfelden\n" " Schrozberg\n" " Sigisweiler\n" " Speckheim\n" " Spielbach\n" " Spindelbach\n" " Standorf\n" " Untereichenrot\n" " Wittmersklingen\n" " Wolfskreut\n" " Zell\n\n" "74585: Rot am See\n" " Beimbach\n" " Bemberg\n" " Brettenfeld\n" " Brettheim\n" " Hausen\n" " Hegenau\n" " Herbertshausen\n" " Heroldhausen\n" " Hertershofen\n" " Hilgartshausen\n" " Kleinansbach\n" " Kleinbrettheim\n" " Kühnhard\n" " Lenkerstetten\n" " Musdorf\n" " Niederwinden\n" " Oberndorf\n" " Oberwinden\n" " Reinsbürg\n" " Reubach\n" " Rot am See\n" " Weikersholz\n\n" "74599: Wallhausen\n" " Asbach\n" " Hengstfeld\n" " Limbach\n" " Michelbach an der Lücke\n" " Roßbürg\n" " Schainbach\n" " Schönbronn\n" " Wallhausen\n\n" "91471: Illesheim\n" " Illesheim 91471\n" " Sontheim 91471\n" " Urfersheim 91471\n" " Westheim 91471\n\n" "91541: Rothenburg\n" " Bettenfeld\n" " Burgstall\n" " Detwang\n" " Dürrenhof\n" " Hemmendorf ob der Tauber\n" " Herrnwinden\n" " Leuzenbronn ob der Tauber\n" " Reusch\n" " Schandhof\n" " Schnepfendorf ob der Tauber\n" " Steinbach\n" " Vorbach ob der Tauber\n\n" "91583: Schillingsfürst\n" " Altengreuth\n" " Bersbronn\n" " Faulenberg\n" " Leipoldsberg\n" " Neureuth\n" " Neuweiler\n" " Schillingsfürst\n" " Schorndorf\n" " Stilzendorf\n" " Wittum\n" " Wohnbach\n" " Ziegelhütte\n\n" "91583: Diebach\n" " Bellershausen\n" " Diebach\n" " Oberoestheim\n" " Unteroestheim\n" " Wolfsau\n\n" "91587: Adelshofen\n" "Adelshofen\n" " Gickelhausen\n" " Großharbach\n" " Haardt\n" " Neustett\n" " Ruckertshofen\n" " Tauberscheckenbach\n" " Tauberzell\n\n" "91592:\n" " Berbersbach am Wald\n" " Gastenfelden\n" " Hagenau am Wald\n" " Morlitzwinden am Wald\n" " Schönbronn\n" " Schweikartswinden\n" " Sengelhof\n" " Traisdorf\n\n" "91593: Burgbernheim\n" "Buchheim\n" " Burgbernheim\n" " Hilpertshof\n" " Hochbach\n" " Pfaffenhofen\n" " Schwebheim\n\n" "91598: Colmberg\n" "Auerbach\n" " Bieg am Wald\n" " Binzwangen\n" " Colmberg\n" " Häslabronn\n" " Kurzendorf\n" " Meuchlein\n" " Oberfelden\n" " Oberhegenau\n" " Poppenbach\n" " Unterfelden\n" " Unterhegenau\n\n" "91601: Dombühl\n" " Baimhofen\n" " Binsenweiler\n" " Bortenberg\n" " Dombühl\n" " Höfen\n" " Kloster Sulz\n" " Ziegelhaus\n\n" "91605: Gallmersgarten\n" "Bergtshofen 91605\n" " Gallmersgarten 91605\n" " Mörlbach 91605\n" " Steinach an der Ens 91605\n" " Steinach bei Rothenburg ob der Tauber 91605\n\n" "91607: Gebsattel\n" "Bockenfeld\n" " Eckartshof\n" " Gebsattel\n" " Kirnberg\n" " Pleikartshof\n" " Rödersdorf\n" " Speierhof\n" " Wildenhof\n\n" "91608: Geslau\n" " Aidenau\n" " Dornhausen\n" " Geslau\n" " Gunzendorf\n" " Hürbel\n" " Kreuth\n" " Lauterbach\n" " Oberbreitenau\n" " Oberndorf\n" " Reinswinden\n" " Schwabsroth\n" " Steinach am Wald\n" " Stettberg\n" " Unterbreitenau\n\n" "91610: Insingen\n" " Insingen 91610\n" " Leidenberg 91610\n" " Leuzhof 91610\n" " Lohr 91610\n" " Lohrbach 91610\n\n" "91613: Marktbergel\n" "Ermetzhof 91613\n" " Marktbergel 91613\n" " Ottenhofen 91613\n\n" "91616: Neusitz\n" "Erlbach ob der Tauber\n" " Horabach ob der Tauber\n" " Neusitz\n" " Schweinsdorf ob der Tauber\n" " Södelbronn ob der Tauber\n" " Wachsenberg ob der Tauber\n\n" "91620: Ohrenbach\n" " Gailshofen\n" " Gumpelshofen\n" " Habelsee\n" " Oberscheckenbach\n" " Ohrenbach\n" " Reichardsroth\n\n" "91628: Steinsfeld\n" " Bettwar\n" " Chausseehaus\n" " Ellwingshofen\n" " Endsee\n" " Gattenhofen\n" " Hartershofen\n" " Reichelshofen\n" " Steinsfeld\n" " Urphershofen\n\n" "91631: Wettringen\n" "Grüb\n" " Obergailnau\n" " Reichenbach\n" " Seemühle\n" " Taubermühle\n" " Untergailnau\n" " Wettringen\n\n" "91635: Windelsbach\n" "Birkach\n" " Burghausen\n" " Cadolzhofen\n" " Hornau\n" " Linden bei Rothenburg ob der Tauber\n" " Nordenberg bei Rothenburg ob der Tauber\n" " Preuntsfelden\n" " Windelsbach\n\n" "91637: Wörnitz\n" "Arzbach\n" " Bastenau\n" " Bottenweiler\n" " Erzberg\n" " Harlang\n" " Mittelstetten\n" " Oberwörnitz\n" " Walkersdorf\n" " Wörnitz\n\n" "97215: Uffenheim\n" "Brackenlohr\n" " Custenlohr\n" " Kleinharbach\n" " Langensteinach\n" " Rudolzhofen\n" " Uffenheim\n" " Uttenhofen\n" " Wallmersbach\n" " Welbhausen\n\n" "97215: Weigenheim\n" "Geckenheim 97215\n" " Reusch bei Würzburg 97215\n" " Weigenheim 97215\n\n" "97215: Simmershofen\n" " Adelhofen\n" " Auernhofen\n" " Equarhofen\n" " Hohlach\n" " Simmershofen\n" " Walkershofen\n\n" "97993: Creglingen\n" " Archshofen\n" " Blumweiler\n" " Craintal\n" " Creglingen\n" " Erdbach\n" " Finsterlohr\n" " Frauental\n" " Freudenbach\n" " Lichtel\n" " Lohrhof\n" " Münster\n" " Niederrimbach\n" " Niedersteinach\n" " Oberrimbach\n" " Reinsbronn\n" " Reutsachsen\n" " Schirmbach\n" " Schmerbach\n" " Schön\n" " Schonach\n" " Schwarzenbronn\n" " Sechselbach\n" " Seldeneck\n" " Waldmannshofen\n" " Weidenhof\n" " Weiler\n" " Wolfsbuch\n\n" "97996: Niederstetten\n" "Adolzhausen\n" " Dunzendorf\n" " Ebertsbronn\n" " Eichhof\n" " Ermershausen\n" " Hachtel\n" " Heimberg\n" " Herrenzimmern\n" " Niederstetten\n" " Oberstetten\n" " Pfitzingen\n" " Rinderfeld\n" " Rüsselhausen\n" " Sichertshausen\n" " Streichental\n" " Vorbachzimmern\n" " Wermutshausen\n" " Wildentierbach\n" " Wolkersfelden\n") subst = "\\t\\1" 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