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

/
/
sgm

Test String

Code Generator

Generated Code

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "(<ptS[a-zA-Z]*Text[a-zA-Z0-9\\/=\\+\\n\\t\\r\\0 \"]+>)([a-zA-Z0-9\\/=+\\n\\t\\r\\0 &#;\\-\\.\\(\\),:£]+)(<\\/ptS[a-zA-Z]*Text[a-zA-Z0-9\\/=\\+\\n\\t\\r\\0 \"]*>)"; final String string = "<CDBText id=\"(0:0-51181)\">\n" + " <dwRefTextOrdner>5622</dwRefTextOrdner>\n" + " <dwRefMitarbeiter>0</dwRefMitarbeiter>\n" + " <ptSName code=\"None\" lang=\"en\">OWN_Text 15</ptSName>\n" + " <dBreite>21</dBreite>\n" + " <dHoehe>29.699999999999999</dHoehe>\n" + " <dOben>2</dOben>\n" + " <dUnten>2</dUnten>\n" + " <dLinks>2</dLinks>\n" + " <dRechts>2</dRechts>\n" + " <cHochQuerformat>0x00</cHochQuerformat>\n" + " <cPapierSchacht>0</cPapierSchacht>\n" + " <cPapierSchachtErsteSeite>0</cPapierSchachtErsteSeite>\n" + " <ptSDruckername code=\"None\" lang=\"en\"></ptSDruckername>\n" + " <ptDErstellungsdatum>Thu 04.Sep 2008</ptDErstellungsdatum>\n" + " <ptDSpeicherungsdatum>Thu 04.Sep 2008</ptDSpeicherungsdatum>\n" + " <ptTSpeicherungszeit>10:10:10 am</ptTSpeicherungszeit>\n" + " <nVersion>3</nVersion>\n" + " <ptSTitel code=\"None\" lang=\"en\"></ptSTitel>\n" + " <ptSThema code=\"None\" lang=\"en\"></ptSThema>\n" + " <ptSAutor code=\"None\" lang=\"en\">ld</ptSAutor>\n" + " <ptSKommentar code=\"None\" lang=\"en\"></ptSKommentar>\n" + " <cGeschuetzt>0x00</cGeschuetzt>\n" + " <cDBTextDaten><xref refid=\"(0:0-51182)\"/></cDBTextDaten>\n" + " </CDBText>\n\n" + " <CDBTextDaten id=\"(0:0-51182)\">\n" + " <ptBKopfzeileText len=\"0\" crc=\"0\">\n\n" + " </ptBKopfzeileText>\n" + " <ptSKopfzeileText code=\"None\" lang=\"en\"></ptSKopfzeileText>\n" + " <ptBKopfzeileFormat len=\"0\" crc=\"0\">\n\n" + " </ptBKopfzeileFormat>\n" + " <ptBFusszeileText len=\"0\" crc=\"0\">\n\n" + " </ptBFusszeileText>\n" + " <ptSFusszeileText code=\"None\" lang=\"en\"></ptSFusszeileText>\n" + " <ptBFusszeileFormat len=\"0\" crc=\"0\">\n\n" + " </ptBFusszeileFormat>\n" + " <ptBMitteText len=\"1031\" crc=\"3139242066\">\n" + "8PHw/1BLAwQUAAAACABFUSQ5KkncyMoCAADTBAAAKwBwAERPQ1VNRX4xL0NBVENM\n" + "SX4xL0xPQ0FMU34xL1RlbXAvMi9ibG8zMC50bXBTRFsApAAAAAAIALXyphxjZGBp\n" + "EGFgYDBggAAfIGZkBTNZRYFE/LvcS4ufyjZ5Wa+KSmHBLcfIxMDAxBDBwAyWlmD4\n" + "zyjPABIDqVUAEgpgtghEnBEiLgSmVCBieOwEAFVUDQAH8qW/SPKlv0jypb9IbVPd\n" + "TtswFO7dtEp9h3MJoi0dGruAq6pkUIlS1HYgLt3kJDF17M52ChGPw4vus1MG+6kU\n" + "p3KOfb6/M5nfLJObFX2fL2bU6xKeT/j9uYZ3r3vP5Lw1ulANWU5NVbHOyJfCk1CK\n" + "tuwdCctUbwfeDDLhmZ6kL2kn0lRq4aXRjtacG9SIrJLOYWfY694qFg5bbkMyp8bU\n" + "7S3a1Xg9lexLtmHbUmYKMpZSdJSO8loBydYaz6nnDDcB/CK5Tu7GIDRLLqaT8TVd\n" + "TZer+eKByDFH2DZzRAeFcQDiy8PADuduF/NJcvFjkdAla7ZCkdCCHXp7mfbJpUIB\n" + "IvhujZKupCPiZ29FGliRyYnW1mxYkzfGl306Oh6guiETwb+Xutis1fPt6XWnVMgd\n" + "UwU2bPfCEOBBXDRdG3wDzZSzoEgAUeuMrfPio/6uTsv3MgeVrG1IkKvCV1YMu3yA\n" + "aqXbDEPTv2+ZWJN7ugs+1jAkNF9DAjJbaSSYC6kpNRoZgDo7IZVY70XBrgu3exNP\n" + "hdNo5Eu45ETe1nCew6fAs6wroSmzdUG4MbL2w2ErSyvIPf83YcgQurgWeGGkLqgS\n" + "j9AJUSnYNn1it+VUihAMo1AUU9kvBboKWitjcF2g9Fhj+ZBFLRFt8WamoOLfEAxb\n" + "pzJDx2HRxgPjz1qGG6A7DwzME5Fg28illrn1seVIy2iF0BJvRwd7PpRLxYdnN6Li\n" + "8y+jb6ej/To6/3qOuHzudceXiySZhTFdzel2/NDrJsvVdDZeJWdEryejEQ3o5OQ0\n" + "AoyjEYYlBDVtgiUIxU5mTKlq5YtTCQcwl7UNY5pjNEATsDyD5pV54h3bfvQSfxrC\n" + "9IbohZzv2LPFOGO34kxislt79xbAkA3CJwGj2hokOUQkYgjFHklxQMDPGAfVxBSK\n" + "AjLFEtFEm4EGDELUlOLfA7aPSZuRfUyWstCcnb3lptN56Ww6L78AUEsBAhcLFAAA\n" + "AAgARVEkOSpJ3MjKAgAA0wQAACsAEQAAAAAAAAAgALaBAAAAAERPQ1VNRX4xL0NB\n" + "VENMSX4xL0xPQ0FMU34xL1RlbXAvMi9ibG8zMC50bXBTRAQApAAAAFVUBQAH8qW/\n" + "SFBLBQYAAAAAAQABAGoAAACDAwAAAAA=\n" + " </ptBMitteText>\n" + " <ptSMitteText code=\"None\" lang=\"en\">CONSENT FORM &#59549;\n" + " &#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "&#59549;\n" + "&#59543;&#59543;&#59549;\n" + "We strongly recommend that all pets are up-to-date with vaccinations before admission.&#59549;\n" + "Please ask if you are unsure whether your dog or cat is fully protected.&#59549;\n" + " &#59549;\n" + "RELEVANT MEDICAL HISTORY see records (gosforth)&#59549;\n" + "&#59549;\n" + " &#59549;\n" + "PROCEDURE General anaesthetic, scale and polish + extraction of broken tooth, +/- any other extractions&#59549;\n" + " &#59549;\n" + "&#59549;\n" + "&#59543;&#59543;&#59549;\n" + "&#59543;&#59543;&#59549;\n" + "&#59543;&#59543;&#59549;\n" + "&#59549;\n" + "I give my permission for the above procedure and understand that all such procedures carry a small element of risk.&#59549;\n" + "I understand that Croft Vets use the best opioid pain control available and consent to the use of this safe and effective human drug in my pet..&#59549;\n" + "&#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "&#59549;\n" + "We recommend that all patients undergoing major surgery, especially older pets,have a blood test just before administration of a general anaesthetic.&#59549;\n" + "&#59549;\n" + "I do / do not require a pre-operative blood screen for my pet Small animals (patient file):Name;10650;10650;0;4;&#59549;\n" + " &#59549;\n" + "AGREEMENT TO PAY&#59549;\n" + "ESTIMATE: £200 - 225&#59549;\n" + "&#59549;\n" + "It is our policy to provide clients with an accurate fee estimate.&#59549;\n" + "However, the very nature of veterinary medicine and surgery makes it impossible to predict costs exactly.&#59549;\n" + "I agree to pay all fees on collection of my pet.&#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "&#59549;\n" + "Signed:&#59549;\n" + "&#59543;&#59543;&#59543;&#59543;&#59549;\n" + "</ptSMitteText>\n" + " <ptBMitteFormat len=\"3251\" crc=\"1808381608\">\n" + "8PHw/1BLAwQUAAAACABFUSQ5oClCBnYLAADi2AAAKwBwAERPQ1VNRX4xL0NBVENM\n" + "SX4xL0xPQ0FMU34xL1RlbXAvMi9ibG8zMi50bXBTRFsApAAAAAAIALXyphxjZGBp\n" + "EGFgYDBggAAfIGZkBTNZRYFE/LvcS4ufyjZ5Wa+KSmHBLcfIxMDAxBDBwAyWlmD4\n" + "zyjPABIDqVUAEgpgtghEnBEiLgSmVCBieOwEAFVUDQAH8qW/SPKlv0jypb9I7Z1t\n" + "bFPXGcef67w4kGDyWigwdLclDVAgdgghYFCXF0MCxPFigwfTNJzklhjyArG7JkVd\n" + "sqoKrVStUVWh7kNbTxVSPmzSmKjEuk6DghhFCBDSNqQhTXwaK5rGh6mbKrq759xr\n" + "c+17bcfOPcaJ9jzm75fjc849vjnc3/Occ3xcMLkBAEQoxvuNwkbhtvW2dbBtYOBB\n" + "gQ3WwZ9lUGxGYPeFAJW+4LAUEt3Sy2Lv6HBgBAyWpJDYOhYMDEFGhT61gJDZkQrs\n" + "cNNMoVjzBEOhI8LG53fD7+8eEa5+eHP/Jx/DWrg/Z6FN8N+P33115tIlJYelMPEz\n" + "ZVhI0I6URaGEE5FpIRH+mn2h+M8kZNgjimrhL9kfSSukWkanPP5IGTfvTPQJlpRl\n" + "9UG5RV+yO5jEf5Pqg3KLvsS7ixcvghyJgHwT9XUEbskRiCi6hZIhcgsVkeEWSo58\n" + "jboJst8P8puoK6jHfrgh++EtlF/R26jPUTL4P0e9jfLL8BbqBkr2P0ZdQb0Jss0G\n" + "chvqNdRnqK9scF22wTRqN8qmaC9qGnUVJYPtKmoatRdlk2E3ahp1HSXbvkJ9hnoN\n" + "1QZX8HNeEVGdqDHU+6hLAB/hGxMoN6pWycRUi3KjJlARFCZGjBlrUW7UBOoj1BW4\n" + "hHofNYbqRIlwCnOeKkfVoZwoD0pCYdXH8c2DqF2oelSlkpmpGrUetQvlQwVR+EYQ\n" + "5YsWWI+qVgtUoupRu1AHUcdRp7BVp0BCeVBOVB2qHO7fvw937tyBy5cvw/nz5+Hs\n" + "2bNw5swZOH36NIyPj0MwGITDhw/Dvn37YOfOnbBp0yZYu3YtLMOjmDc7qgwK8GY0\n" + "ISrNLNhePmYx1F0I5VPm6x2HJVjvj23C3FnT2G/kPSnfW572scoKCu2eqi1DuVu7\n" + "XWLPbtHj8u2AHxVhyiQ7B2I1e8rYe6/oXtFUafcgsZfYS+wl9hJ758/eMqVfVT/p\n" + "amV4lVKv+p2GbmjGZhSa/ecFly49PYNmy7g2IjPbgvIOB4aGxMBIEB9D4roTgXBQ\n" + "GgmLLwaHpPU73IFhyemwN2+1R+/tziYnvJOCVIdqiFREKiIVkYpIZYZUahwUI1V5\n" + "vQAbvqnFRn1CI8xiHn09HkMXnb91du3dt7/b3YNcitJMH1ulp9mN4jxEVCUov6tr\n" + "T2eaYKqAgilCFCGKEAWEKDOIsir9SgumrDkKpiCKny5danr8/LKUcyMysWaYI5jy\n" + "S8Gjg2FdOOVIE099UEWwIlgRrAhWBCt+8VQVxlNDCfHUViWeWrvkgrA5LpVnPLUf\n" + "AtCHn4jPfNndKBT3maplkc2XVaG8Hld7l8vb0NbrcnXsgC3N2+0zCjvZ9YxmzYid\n" + "xE5iJ7GTJzttSr/SJqdsTwI91arjnsfemTF00IVgj6LU7NalL8B5OfY/PG0o6T0h\n" + "9QelkC6WbHY2pC3VNiZJA7oyLU44dnxo+FoKjNKUHmGUMEoYJYyaw6jS26MY7YQK\n" + "DEHPJQlBVdPSEwPXSiy19FvxpbYopVrW7+gIhCVno6MJL+h4qg0deyFaiaDiuEeX\n" + "vgAnFhkQva7v0ayi2jyiJFGSGVGSKMmXkoVKv9JCysIczyp+V5e6AGcV51yi6ZXG\n" + "9VOKjTSlqDaPSEWkYkakIlLlckqxGiOzL+uMSzTPQRNUW2YLNwNT3wTPKcX3hM1Q\n" + "cn2yhM+UYks0GvOaqmWRTSkyMLbucdFX79TmES2JlsyIlkTLxRnXeaIUO6BLX4BT\n" + "fPjHSR/XsSFdcfRFsS84Fh7UR3h2+hKe2jxiFjGLGTGLmJXLCK8GI7yW5+IjvJ1x\n" + "M3ZaxMczwmt0xp4NRrnm1+VYgHNlbL1Qh8vb3tvl8XX1uHeINGkGBKrsChGoCFQE\n" + "qsz3FGOmBVfLcjxpdkiXOvekmQB5NV7bnzFL/CgWLmOvv4rS/fumapn/2OvE0jz4\n" + "Cay/Hmxtb+9ytzI/QfT6Wn0HvKmHYicryFsgb4G8BfIWyFsw4y1UKf1K8xaqcuwt\n" + "/ECXmh5Fv12dB2+BLet56YQYHhUHAmEpJYH+2UAEIgIRgYhARCAzBFqq9CuNQOy1\n" + "es3nSaCD89xp+2TCq9lidhUuirZZs7vFrN3GdGa1hvROLrt+qzXp6xa4hbcC6Nnr\n" + "4FL3I+UcCoYQs8TKtmwzpqttMabzDOP1R+N5DhNtkFvdg4Zzkst25/J88xk2uWBR\n" + "Pcwfmqpl/sMmryzJw7AJ+6PEdo3v8btdvWkmWH63nBxWcljJYSWHlRxWMw6rernX\n" + "HNblOR4yCehS02PokzWcG5GJ/QzV/lIoPDosjRlWrvmC4SG2azxa9J5tMyGmzL87\n" + "OBYKiyPqVvPxhZrTFNofSF6myQlfpODhOQfxkHhIPCQeEg/N8LBI6VcqDzthRb0A\n" + "ryesjGuIrow7AomB5TisxLyXE/I2RfPOgD4IfQbzWuvj86q7XUyX2P82VaJd108Y\n" + "un7urBwuwxtQaeETwD5QAth7K8xNeCyyAJaNhLV2dPS6vF4thqUQFgjZ2RUiZBOy\n" + "CdmZIrtC6VdaCFuR0xC2oUaPtAUYwv4c0oSw3vCYJIV1oaWj0bkxdUDqG315pKE/\n" + "GJ7Ql2pOV8ozGgr3jw5IDYe7PPqCFMoSF7MuRFwkLhIX5/MzNp3wrOGX1hxxoawl\n" + "rkuOwyrMuzchPI0PZePzAqzGfD9NyLtNzavr808zlL3WvgtaPn2lhE8ou7KAcf+L\n" + "Z/+vQlnmVLX3uH2t7T7RfaC7zdWbZv06RbJEbCI2EZuIbY7Y6qokLZItz2kk+07F\n" + "Iohk2THtju0OsbHF0dTctFUcHRPt27Y3OhyN7BdyUiKJgkhCEiGJkERIMoek1Uq/\n" + "0pC0+skzvkjK3YLcELcF6iG8QidukzyVdJF8tiZipL7BUDdAi7JvpDGdmceQXs7t\n" + "c5YnOSavusFQN589Pi8qQfrsqnwF6VMFkPTvlFNjIzze4NERaQCmU/hBjUXkB5Ef\n" + "RH4Q+UHkB5nxg9QwXPODinVfWNpZUldQCufg19/muUuaZncVvv3dwLdECgm61/8q\n" + "zQOVEu2R0vDhb2Q31vDHsjw0nHGzI9235Gdp+1GCKcGUYAoEU/NbZtfE9+Ho1T4X\n" + "49zPZ8meh0vywJ56lGcsOBIOjhxVtmoR19kdDfjPsX277jcQU22O/Xo50YnoRHQi\n" + "OhGd+G2O/Sd8PfNk3VQZ9AnPKeub9FOMXMO+79SC9Rl2TH7D4vph159wGbr2WAH2\n" + "YuC0TJc+aGXsNaYz22xIr+Y2vFyd5Jj8hq71db/Ape4pPFcrk+wJ8541fr/buPyF\n" + "KfIXptpfbk29AL+oNb4X29jdwqWfXUt5fCFJOs/pigK8xVvNPD/PSUNKzVPdq6eN\n" + "2zlpM/TVY9zqPmao2z7v860/43bD+bZymR56o0hZw1mXvH9mavOfHjpcmoc1nGw7\n" + "zG6Xr7Ong30b0dN6qNvl9qVexVlKP59K8QPFDxQ/AMUPZuIHlbPaVFFljlZxRhSm\n" + "PVyd3ejWnsI8kCjRLigNf9fwhYrkDY7NaT0uyNOvqLYHQoMpobmsmKBJ0CRoEjQJ\n" + "movhV1RvK+ypX5nIHkHHGv3jI8g7NB8oDT+Zgvb6hR+xxxWWvDccilnDX83QTYl9\n" + "kC/z4aaw38o9GAwFGlr7+6VQKOWiyqtWgj5Bn6BP0Cfom4G+OiMV26GA/epA4uiv\n" + "hozcLKpU14ecWJWdM/AQ8s5UXtMbkGy4fV51G2u3Gurm802PI4o/Ub8mX0P5/86H\n" + "Z8IOyNYApR69/wP5JOSTkE9CPgmQT8JrA2Clq+VoIGJcwdgeA8bSw+fO8jzAh8Pa\n" + "1H+sIjoRnYhORCeiE9+1qbE9/RilYmtTNVOf84yeY/ub44VLIdi6Ob6SqH/cVpSn\n" + "gd32Qan/uDQg9k2kDqJaSghThCnCFGGKMMVrYJdZaU43sqvO8lvxTWWLdAA3menX\n" + "vv8PUEsBAhcLFAAAAAgARVEkOaApQgZ2CwAA4tgAACsAEQAAAAAAAAAgALaBAAAA\n" + "AERPQ1VNRX4xL0NBVENMSX4xL0xPQ0FMU34xL1RlbXAvMi9ibG8zMi50bXBTRAQA\n" + "pAAAAFVUBQAH8qW/SFBLBQYAAAAAAQABAGoAAAAvDAAAAAA=\n" + " </ptBMitteFormat>\n" + " </CDBTextDaten>\n"; final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL | Pattern.MULTILINE); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html