Regular Expressions 101

Save & Share

  • Regex Version: ver. 5
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

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

/
/
mg

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 = "GameID=(\\d+)\">[^>]+>\\s+(?<first_team>[^>]+)?\\s+vs\\s+[^>]+>\\s+(?<second_team>Brisbane)\\s+(?!upcoming)<"; final String string = "\n" + "<!DOCTYPE html>\n" + "<html lang=\"en\">\n" + " <head>\n" + " <meta charset=\"utf-8\">\n" + " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" + " <meta name=\"mobile-web-app-capable\" content=\"yes\">\n" + " <link rel=\"icon\" sizes=\"196x196\" href=\"http://dtlive.com.au/afl/images/dtliveicon.png\">\n" + " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" + " <meta name=\"description\" content=\"dtlive.com.au AFL Fantasy and Real Dream Team website. Live scores, in depth stats in a clean easy to use format\"><title>DTLive.com.au - AFL Fantasy and Real Dream Team website. Live scores, in depth stats in a clean easy to use format</title> <script src=\"https://code.jquery.com/jquery-1.10.2.min.js\"></script>\n" + " <script src=\"http://dtlive.com.au/afl/embedapi-master/src/ustream-embedapi.js\"></script>\n" + " <link href=\"//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css\" rel=\"stylesheet\">\n\n" + " <!-- Bootstrap -->\n" + " <link rel=\"stylesheet\" href=\"//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css\">\n" + " <script src=\"//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js\"></script>\n\n" + " <!-- Custom styles for this template -->\n" + " <link href=\"http://dtlive.com.au/afl/starter-template2.css\" rel=\"stylesheet\">\n\n" + " <!--[if lt IE 9]><script src=\"../../docs-assets/js/ie8-responsive-file-warning.js\"></script><![endif]-->\n" + " <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->\n" + " <!--[if lt IE 9]>\n" + " <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n" + " <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n" + " <![endif]-->\n" + " <script>\n" + " (function($){\n" + " $(document).ready(function(){\n" + " $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {\n" + " event.preventDefault(); \n" + " event.stopPropagation(); \n" + " $(this).parent().siblings().removeClass('open');\n" + " $(this).parent().toggleClass('open');\n" + " });\n" + " });\n" + " })(jQuery);\n" + " </script>\n" + " <style>\n" + " .marginBottom-0 {margin-bottom:0;}\n\n" + " .dropdown-submenu{position:relative;}\n" + " .dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}\n" + " .dropdown-submenu>a:after{display:block;content:\" \";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}\n" + " .dropdown-submenu:hover>a:after{border-left-color:#555;}\n" + " .dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}\n" + " .dropdown-nowidepad { width: 48px !important; padding-right: 0px !important; padding-left: 0px !important; }\n" + " </style>\n" + " </head>\n" + "<body>\n" + "<nav class=\"navbar navbar-inverse navbar-fixed-top\" role=\"navigation\">\n" + " <div class=\"container\"><div class=\"col-xs-12\">\n" + " <div class=\"navbar-header\">\n" + " <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse-1\">\n" + " <span class=\"sr-only\">Toggle navigation</span>\n" + " <span class=\"icon-bar\"></span>\n" + " <span class=\"icon-bar\"></span>\n" + " <span class=\"icon-bar\"></span>\n" + " </button>\n" + " <a class=\"navbar-brand\" href=\"http://www.dtlive.com.au\" style=\"padding: 15px 5px 15px 5px !important\">DTLive</a>\n" + " </div>\n" + " \n" + " <div class=\"collapse navbar-collapse\" id=\"navbar-collapse-1\">\n" + " <ul class=\"nav navbar-nav\">\n" + " <li><a href=\"http://dtlive.com.au/premium/\" style=\"padding: 0px 5px 0px 5px !important;\"><img src=\"http://www.dtlive.com.au/images/premium.png\"></a></li> \n\n" + " <li class=\"dropdown\"><a href=\"http://www.dtlive.com.au/afl/\" class=\"dropdown-toggle dropdown-nowidepad\" data-toggle=\"dropdown\"><img src=\"http://www.dtlive.com.au/images/aflnav_24.png\"> <b class=\"caret\"></b></a>\n" + " <ul class=\"dropdown-menu\">\n" + " <li>\n" + " <form class=\"navbar-form navbar-left\" role=\"search\" action=\"http://dtlive.com.au/afl/playersearch.php\">\n" + " <div class=\"input-group\">\n" + " <input type=\"text\" class=\"form-control\" placeholder=\"Player Search\" name=\"SearchString\" id=\"srch-term\">\n" + " <div class=\"input-group-btn\"><button class=\"btn btn-default\" type=\"submit\"><i class=\"glyphicon glyphicon-search\"></i></button></div>\n" + " </div>\n" + " </form>\n" + " </li>\n" + " <li><a href=\"http://www.dtlive.com.au/afl/\">AFL Home</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/dataview.php\">Data View</a></li>\n" + " <li><a href=\"http://www.dtlive.com.au/afl/drawingboard/\">Drawing Board</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/projector.php\">Projector</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/teamicons.php\">Team Icons</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/teamstats.php\">Team Stats</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/heatmaps.php\">Heat Maps</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/calvin.php\">Calvins Captains</a></li>\n" + " <li><a href=\"http://dtlive.com.au/afl/myplayers.php\">My Players</a></li>\n" + " <li class=\"divider\"></li>\n" + " <li class=\"dropdown dropdown-submenu\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\"><img src=\"http://dtlive.com.au/images/dttalknav.jpg\"> DT Talk</a>\n" + " <ul class=\"dropdown-menu\"><li><a href=\"http://dreamteamtalk.com/?p=49141\" target=\"_blank\">Moneyball's $5000 Sunday Funday is upon us!</a></li><li><a href=\"http://dreamteamtalk.com/?p=49147\" target=\"_blank\">Handball happy - Rd 2 Fantasy Review</a></li><li><a href=\"http://dreamteamtalk.com/?p=49152\" target=\"_blank\">My Team 2017 - Round 3</a></li><li><a href=\"http://dreamteamtalk.com/?p=49156\" target=\"_blank\">The Weekend Wash-Up - Round 2</a></li><li><a href=\"http://dreamteamtalk.com/?p=49161\" target=\"_blank\">Fix &lsquo;er up - Ep. 126</a></li></ul>\n" + " </li>\n" + " <li class=\"dropdown dropdown-submenu\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\"><img src=\"http://dtlive.com.au/images/coachespanel.jpg\"> Coaches Panel</a>\n" + " <ul class=\"dropdown-menu\"><li><a href=\"http://coachespanel.com.au/?p=9912\" target=\"_blank\">Makers and Breakers - Round 2</a></li></ul>\n" + " </li>\n" + " </ul>\n" + " </li>\n\n" + " <li class=\"dropdown\"><a href=\"http://www.dtlive.com.au/bbl/\" class=\"dropdown-toggle dropdown-nowidepad\" data-toggle=\"dropdown\"><img src=\"http://www.dtlive.com.au/images/bblnav_24.png\"> <b class=\"caret\"></b></a>\n" + " <ul class=\"dropdown-menu\">\n" + " <li><a href=\"http://www.dtlive.com.au/bbl/\">BBL Home</a></li> </ul>\n" + " </li>\n\n\n" + " <li class=\"dropdown\"><a href=\"http://www.dtlive.com.au/nbl/\" class=\"dropdown-toggle dropdown-nowidepad\" data-toggle=\"dropdown\"><img src=\"http://www.dtlive.com.au/images/nblnav_24.png\"> <b class=\"caret\"></b></a>\n" + " <ul class=\"dropdown-menu\">\n" + " <li><a href=\"http://www.dtlive.com.au/nbl/\">NBL Home</a></li>\n" + " <li><a href=\"http://dtlive.com.au/nbl/myround.php\">My Team</a></li>\n" + " <li><a href=\"http://dtlive.com.au/nbl/stats.php\">Stats</a></li>\n" + " </ul>\n" + " </li>\n" + " </ul>\n\n" + " <ul class=\"nav navbar-nav navbar-right\">\n" + " <li><a href=\"http://dtlive.com.au/register.php\">Sign Up</a></li>\n" + " <li class=\"dropdown\">\n" + " <a href=\"http://dtlive.com.au/login.php\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">Sign in <b class=\"caret\"></b></a>\n" + " <ul class=\"dropdown-menu\" style=\"padding: 15px;min-width: 250px;\">\n" + " <li>\n" + " <div class=\"row\">\n" + " <div class=\"col-md-12\">\n" + " <form class=\"form\" role=\"form\" method=\"post\" action=\"/afl/viewgames.php\" accept-charset=\"UTF-8\" id=\"login-nav\">\n" + " <div class=\"form-group\"><input type=\"text\" class=\"form-control\" name=\"user\" id=\"user\" placeholder=\"Username\" required></div>\n" + " <div class=\"form-group\"><input type=\"password\" class=\"form-control\" name=\"pass\" id=\"pass\" placeholder=\"Password\" required></div>\n" + " <div class=\"form-group\"><input type=\"submit\" name=\"sublogin\" class=\"btn btn-success btn-block\" value=\"Login\"></div>\n" + " </form>\n" + " <hr><a href=\"https://www.facebook.com/dialog/oauth?client_id=695932313759732&redirect_uri=http%3A%2F%2Fdtlive.com.au%2Fafl%2Fviewgames.php%3FDoFacebookLogin%3DYes%26&state=96849fa138d10e32c196eb1cd2d2ed62&sdk=php-sdk-3.2.3\" class=\"btn btn-primary btn-block\" style=\"color: #FFF !important;\">Login using Facebook</a>\n" + " <hr><a href=\"../forgotpass.php\" class=\"btn btn-warning btn-block\">Forgotten Password?</a>\n" + " </div>\n" + " </div>\n" + " </li>\n" + " </ul>\n" + " </li>\n" + " </ul>\n" + " </div></div>\n\n" + " </div><!-- /.navbar-collapse -->\n" + "</nav>\n" + "<div class=\"container\">\n" + "<div class=\"row\">&nbsp;</div><div class=\"row\"><h2>2017 Premiership Season</h2></div><div class=\"row\"><h4>Round 3</h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1153\"><img src=\"images/SYD.png\"> Sydney vs <img src=\"images/COL.png\"> Collingwood (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1154\"><img src=\"images/NME.png\"> North Melbourne vs <img src=\"images/GWS.png\"> GWS Giants (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1155\"><img src=\"images/RIC.png\"> Richmond vs <img src=\"images/WCE.png\"> West Coast (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1156\"><img src=\"images/GEE.png\"> Geelong vs <img src=\"images/MEL.png\"> Melbourne (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1158\"><img src=\"images/FRE.png\"> Fremantle vs <img src=\"images/WBD.png\"> Western Bulldogs (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1157\"><img src=\"images/PTA.png\"> Port Adelaide vs <img src=\"images/ADE.png\"> Adelaide (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1159\"><img src=\"images/STK.png\"> St Kilda vs <img src=\"images/BRL.png\"> Brisbane (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1160\"><img src=\"images/CAR.png\"> Carlton vs <img src=\"images/ESS.png\"> Essendon (upcoming)</a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1161\"><img src=\"images/GCS.png\"> Gold Coast vs <img src=\"images/HAW.png\"> Hawthorn (upcoming)</a></h4></div><div class=\"row\"><h4>Round 2</h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1144\"><img src=\"images/RIC.png\"> Richmond vs <img src=\"images/COL.png\"> Collingwood <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1145\"><img src=\"images/WBD.png\"> Western Bulldogs vs <img src=\"images/SYD.png\"> Sydney <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1146\"><img src=\"images/HAW.png\"> Hawthorn vs <img src=\"images/ADE.png\"> Adelaide <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1147\"><img src=\"images/GWS.png\"> GWS Giants vs <img src=\"images/GCS.png\"> Gold Coast <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1148\"><img src=\"images/BRL.png\"> Brisbane vs <img src=\"images/ESS.png\"> Essendon <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1149\"><img src=\"images/WCE.png\"> West Coast vs <img src=\"images/STK.png\"> St Kilda <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1150\"><img src=\"images/GEE.png\"> Geelong vs <img src=\"images/NME.png\"> North Melbourne <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1151\"><img src=\"images/MEL.png\"> Melbourne vs <img src=\"images/CAR.png\"> Carlton <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1152\"><img src=\"images/PTA.png\"> Port Adelaide vs <img src=\"images/FRE.png\"> Fremantle <small>(completed)</small></a></h4></div><div class=\"row\"><h4>Round 1</h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1135\"><img src=\"images/CAR.png\"> Carlton vs <img src=\"images/RIC.png\"> Richmond <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1136\"><img src=\"images/COL.png\"> Collingwood vs <img src=\"images/WBD.png\"> Western Bulldogs <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1138\"><img src=\"images/SYD.png\"> Sydney vs <img src=\"images/PTA.png\"> Port Adelaide <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1137\"><img src=\"images/STK.png\"> St Kilda vs <img src=\"images/MEL.png\"> Melbourne <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1140\"><img src=\"images/ESS.png\"> Essendon vs <img src=\"images/HAW.png\"> Hawthorn <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1139\"><img src=\"images/GCS.png\"> Gold Coast vs <img src=\"images/BRL.png\"> Brisbane <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1141\"><img src=\"images/NME.png\"> North Melbourne vs <img src=\"images/WCE.png\"> West Coast <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1142\"><img src=\"images/ADE.png\"> Adelaide vs <img src=\"images/GWS.png\"> GWS Giants <small>(completed)</small></a></h4></div><div class=\"row\"><h4><a href=\"livescores.php?GameID=1143\"><img src=\"images/FRE.png\"> Fremantle vs <img src=\"images/GEE.png\"> Geelong <small>(completed)</small></a></h4></div><br><br>\n" + " </body>\n" + "</html>"; final Pattern pattern = Pattern.compile(regex, 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