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
No Match

r"
"
g

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 = "([8:;]-?[)DP\\}>]|[[(\\{<]-?[8:;])"; final String string = ":-)--\n" + ":-%\n" + ":-)-{8\n" + ":>)\n" + ":-X\n" + "*:o)\n" + ":->|\n" + "o-)\n" + "=:-)\n" + ">:)\n" + ":-{\n" + ":-)))))))\n" + "[:|]\n" + "@>--;--\n" + ":%)%\n" + ":-=)\n" + ":-s\n" + "(ap)\n" + ":-o\n" + "OOOOOO\n" + "(8>/--<\n" + "(.V.)\n" + "(.!.)\n" + ":-O\n" + ":-|\n" + ":%)\n" + "(:I\n" + ":-0\n" + "O:)\n" + "O:-)\n" + "O-)\n" + "0=)\n" + "0:-)\n" + "(a)\n" + "^j^\n" + "0*-)\n" + "0;-)\n" + "o:-)\n" + "X(\n" + "X-(\n" + "O\n" + "b (\n" + ">:-)\n" + ">:-(\n" + "(:-&\n" + ":@\n" + ":(\n" + ":-t\n" + ":-||\n" + ":-@\n" + ":-Z\n" + "|_|'\n" + "-_-;\n" + "^^;\n" + "??\n" + "@_@\n" + "(-_-* )\n" + "( o_o)\n" + "<:-I\n" + "=D>\n" + ":*)?\n" + ":*) ?\n" + "l-)\n" + "|-I\n" + "|-)\n" + "~X(\n" + "(-:\n" + "(au)\n" + ":o)\n" + ":=8)\n" + "~O><\n" + "~:O\n" + "~:0\n" + "X:-)\n" + "~#:-(\n" + "?:-)\n" + "~~8-O\n" + "C:-|\n" + "(:-)\n" + "((\n" + "(::( )::)\n" + "(::[]::)\n" + "o >\n" + ":-E\n" + "D:-)\n" + "q:-)\n" + "d:-)\n" + "d:-p\n" + ":)\n" + ":-{0\n" + "^v^\n" + "B-)\n" + ";;)\n" + "(brb)\n" + "(''')-.-(''')\n" + "(\") (\")\n" + ":>)=\n" + ":)#\n" + ":-){\n" + "(:-{~\n" + "b-(\n" + "%+|\n" + ": =\n" + "0___\n" + "X:-|\n" + "%-|\n" + "(b)\n" + "&:-o-8-<\n" + "(*)/ (*)\n" + ":D\n" + ":-D\n" + ">:D<\n" + ":------------)\n" + "(:+)\n" + ":)) \n" + ":-(=)\n" + "<(:?)\n" + "=|:O}\n" + "~O~\n" + "(\n" + "|-O\n" + "(^)\n" + "*<:)\n" + ":->\n" + ":-]\n" + "(:<)\n" + "(:-D\n" + "?-(\n" + "!-(\n" + "(bah)\n" + "(:-\n" + "#-)\n" + "^^\n" + "%')\n" + ":-{}\n" + "`-`\n" + ":\")\n" + ":,')\n" + ":-\">\n" + "(@_@)\n" + "@=\n" + ":-(\n" + "l-o\n" + "\\-o\n" + ":-!\n" + ":-O ZZ ZZ ZZ\n" + ":-}X\n" + "(||)\n" + "===O____iii\n" + "Q(''q) Q(''Q)\n" + "(z)\n" + "( '}{' )\n" + ">:*)\n" + ":-#\n" + "%-(\n" + "=((\n" + "</3\n" + "(U)\n" + "(:^(\n" + ":^)\n" + "}:-(\n" + ":-c\n" + " U U \n" + "#:-)\n" + ":-#|\n" + "(_|_)\n" + "}i{\n" + "}|{\n" + "})i({\n" + "(p)\n" + ":()\n" + "P=\\\\\n" + "~\n" + "=^.^=\n" + ">'o'<\n" + ">^..^<\n" + ">^,,^<\n" + "}:-X\n" + "(@)\n" + ">;3\n" + "Q:-)\n" + "(:@@@@@@@@@@@@@@@D\n" + "C|:-=\n" + ";)\n" + "\\o/\n" + "*\\O/*\n" + "C=:-)\n" + "(-: =3\n" + "8^\n" + "~:>\n" + "C8o \\\n" + "C8o )\n" + "C8o (\n" + ";-(\n" + "<|-)=\n" + "-{:-]\n" + "*<<<<=\n" + "*<<<<+\n" + "<{^-^}>\n" + "=====~\n" + "(ci)\n" + ":-.)\n" + "(:)\n" + ":-)\n" + "(o)\n" + "<|:-()}\n" + "<|:^0|<\n" + "<]:o){\n" + "*<):O)\n" + "*<:O)\n" + ":O)\n" + ":*)\n" + "(c)\n" + "?_?\n" + "P-)\n" + "$:-)\n" + "(co)\n" + ":-r\n" + ":-8(\n" + "O.o\n" + "%)\n" + "%-)\n" + ":s\n" + ":-S\n" + ":-Q\n" + ":-$\n" + ":-/\n" + "3:08\n" + "3:-O\n" + "+/'\\\n" + "<):)\n" + "<):-)\n" + "}:-)\n" + "{:-)\n" + "V.v.V\n" + "H-)\n" + "T_T\n" + "T^T\n" + "QQ\n" + "=O ::::::\n" + "='(\n" + "&.(..\n" + "(;_;)\n" + ":'(\n" + ":'\n" + ":'-(\n" + ":*(\n" + ":*-(\n" + ":((\n" + ":..[\n" + ":_ (\n" + ":`-(\n" + ";_;\n" + ":'-)\n" + "|_|\n" + "C(_)\n" + "~o)\n" + "|_P\n" + "&:-)\n" + "@:-)\n" + ":-@!\n" + "O-(\n" + "0-)\n" + "*-(\n" + "<(..<)\n" + "\\\\:D/\n" + "(>..)>\n" + "^(. .)^\n" + "C8<]\n" + "Q:|\n" + "8->\n" + "*-*\n" + "8-#\n" + ":-| :-|\n" + ":-9\n" + ":-[\n" + "}=^{|~\n" + "]:->\n" + "()}:o)\n" + "-6\n" + ">:->\n" + "}:->\n" + ":>\n" + ";->\n" + "/\\\n" + "=\\\n" + ":|\n" + ":(&\n" + ":-e\n" + "DX\n" + "/:(\n" + "%-}\n" + "d[-_-]b\n" + "[:-}\n" + "d^_^b\n" + "<[.,=.,]-\n" + ":O$\n" + ":O\\'\n" + ":O/\n" + ":O?\n" + ":3-<\n" + ":3-]\n" + "8==3\n" + "&===3\n" + "(&)\n" + "(>.<)\n" + "#-o\n" + ":-) 8\n" + ":$)\n" + ":-))\n" + "}:-(=\n" + "(:-|K-\n" + "\\_/\n" + "*DRINK*\n" + ":-). . .\n" + "=P~\n" + "*DROOLING*\n" + ":P\n" + ":-P\n" + ":-)~\n" + ":-P```\n" + ":-B\n" + ":~)\n" + ":#)\n" + ":-}\n" + "%-\n" + "./\n" + "8)\n" + "<:-)\n" + "<:I\n" + "<:-(\n" + "(e)\n" + "<:-0\n" + ":~\n" + "2:)\n" + "@=)\n" + "5:-)\n" + "&:-/\n" + ":$\n" + "T-T\n" + "//_^\n" + "(//.^)\n" + "(//_^)\n" + "0|-)\n" + "(.\\|/.)\n" + ">-)\n" + ":-6\n" + "8-)\n" + "}=D\n" + "-@--@-\n" + "# -\n" + "(p ^^)=====O\n" + "o,..,o\n" + "^,..,^\n" + ">-\n" + "/ | | |\n" + "(~)\n" + "(yn)\n" + "><(((\">\n" + "<><\n" + "<*))))><\n" + "<((((><\n" + "<\")))><\n" + "<.{{{><\n" + "}-(((*>\n" + "{}{\n" + ";-)\n" + "@>---\n" + "()\n" + "G:-)\n" + "=:-H\n" + "%%-\n" + "7:-)\n" + "/:-)\n" + " \n" + "8)~~*\n" + "<? ?>\n" + ":(?)\n" + "[II]D\n" + "(:-(\n" + ":-<\n" + "):-(\n" + "X[\n" + "=P\n" + "><\n" + "://\n" + "\\~/\n" + "*:*\n" + ": 0=/--\n" + "8=:-)\n" + ":O\n" + "4:-)\n" + "~~:-(\n" + "(g)\n" + "*GIGGLING*\n" + ">:o===Q<\n" + "8:^)\n" + "(x)\n" + "-o-o-\n" + "8*)\n" + "8:-)\n" + "(nah)\n" + ":-{>\n" + ":-)>\n" + "|-|\n" + "o/\n" + "8:]\n" + "%:O\n" + ":8]\n" + "(~};)\n" + ":^D\"\n" + "$_$\n" + "(____)\n" + "$8()\n" + "(^:^)\n" + "E:-)\n" + "E-:-)\n" + "(%)\n" + ":-3\n" + ":-})\n" + "&:-]\n" + "U\n" + "|___|\n" + "=)\n" + "^.^\n" + "^?^\n" + "^-^\n" + " :-)\n" + "3:8)\n" + ":@)\n" + "<~8)\n" + ">O<\n" + "/* *\n" + ":-'\n" + ":-)}\n" + "-:-)\n" + ":=)\n" + "<<<<(:\n" + "<<<<(:-)\n" + ":-`|\n" + "(({..}))\n" + "<u3\n" + "<3\n" + "(:-...\n" + "|:-)\n" + "(h5)\n" + "^5\n" + ":-I\n" + ":-\\\n" + ":-,\n" + "|-D\n" + "L.\n" + "(8-(1)\n" + "(_8^(|)\n" + "( o ) ( o )\n" + "[_]\n" + "(h)\n" + "{ }\n" + "((((name))))\n" + "(:)\\/<\n" + ":)X\n" + "<(^.^<)\n" + "<(*.*<)\n" + "((()))\n" + ":D<\n" + "{{{***}}}\n" + "(()):**\n" + "%*@:-(\n" + "%-\\\n" + ":0\n" + "XD\n" + "@-)\n" + "O[-<]:\n" + ":[\n" + "((:-/\n" + "?$?:-)\n" + ">;-('\n" + ":-) .\n" + ":-) ,\n" + "#;-)\n" + ":+(\n" + "(-.-)ZZZ\n" + "~oO>\n" + "(:-$\n" + "*red+u\n" + "*help\n" + "*IN LOVE*\n" + "(*_*)\n" + "._.\n" + ":7/\n" + "8\n" + "%7<\n" + "(ip)\n" + "?:^[]\n" + ":###)\n" + "//o-o\\\\\n" + "(8 {\n" + "X-p\n" + "*JOKINGLY*\n" + "8-*\n" + "@:-}\n" + ":-T\n" + "\\VVV/\n" + "\\$$$/\n" + "<('.'<)\n" + "<(^.^)>\n" + "<( '.' <)\n" + "<( '.' )>\n" + "(>'.')>\n" + "=\n" + "*\n" + ":-*\n" + ":-)*\n" + ";-(!)\n" + "(_X_)\n" + "*KISSED*\n" + ":*\n" + ":}{:\n" + "*KISSING*\n" + "(}{)\n" + "(:-*\n" + "( '}~{' )\n" + ":pd:\n" + "=+=\n" + "=^w^=\n" + ":3\n" + "@(*o*)@\n" + ":*)O\n" + "<{::}>\n" + "(::)<\n" + "C:-)\n" + "l8r)\n" + ":))\n" + ";-D\n" + "%OD\n" + "=D\n" + "%-(I)\n" + ":.-)\n" + "?-:\n" + "({)\n" + ")-:\n" + ">;->\n" + ":^o\n" + "(i)\n" + "(li)\n" + ";-,\n" + "(:)-)\n" + ":X\n" + "[:-)\n" + ":-----)\n" + "<@> <@>\n" + ">_>\n" + "<_<\n" + "(*)?(*)\n" + "<.< >.>\n" + "<o?o>\n" + "<*_*>\n" + ":-?\n" + "L-)\n" + "%+{\n" + ":-) :-) :-)\n" + "(>^.^)> <3 <(^.^<)\n" + ":x\n" + "(m)(m)(m)\n" + "~:(\n" + "=/\n" + ">=[\n" + ">=(\n" + ">:-<\n" + ">,<\n" + "&-L\n" + ":-(*)\n" + ":-\n" + "@@@@@:-)\n" + "@@@@:-)\n" + "(#-[\n" + ":-)(-:\n" + "(d)\n" + "3:[\n" + "\\m/\n" + "�O�\n" + "8(:-)\n" + "o/<\n" + "o|-<\n" + ":<\n" + ":p\n" + ":~/\n" + "(mp)\n" + "^o^\n" + "(mo)\n" + "$-)\n" + "@(-_-)@\n" + "---\n" + "@(^_^)@\n" + ":E\n" + "(00)\n" + "(|)\n" + "(_i_)\n" + "oO~\n" + "~<>^>\n" + "<:3)~~\n" + "<:3)~\n" + "<:3 )~\n" + ":-{)\n" + ":-{)}\n" + "8-o\n" + "~O-O~\n" + "(m)\n" + "l_l)\n" + "={D\n" + "{ 8{]\n" + ":{\n" + ":-{)=\n" + "{:-{)}\n" + ":-:\n" + ":-x\n" + ":-SS\n" + "~,~\n" + "*:-)\n" + "(-)\n" + "8-|\n" + "*8-I\n" + "E-:-I\n" + "{}\n" + "|:-0\n" + ":/i\n" + ":/)\n" + "[-(\n" + "-8\n" + "8-O\n" + "#:-O\n" + "#:-o\n" + "?:-_]\n" + "|:-{)~\n" + ":)]\n" + ".-]\n" + ".-)\n" + ",-)\n" + "':-(\n" + "':-�\n" + "�-)\n" + "'-)\n" + "=X\n" + "=^)\n" + ":d\n" + "^_^\n" + "(^o^)\n" + " \n" + "<.....\n" + "(<. . . . .\n" + "(:V)\n" + ":v\n" + "<:o)\n" + "<:-P\n" + "<l:0\n" + "*<(8)~/~<\n" + "*<|8-P~\n" + "(:V\n" + "(/|\\)\n" + ":)>-\n" + "8>\n" + "<:^]\n" + "3:]\n" + ">:P\n" + ":?)\n" + "%\\v\n" + "%-^\n" + "----|}\n" + "o()~\n" + "=8)\n" + ":8)\n" + ":(:)\n" + "(o^-^o)\n" + "^_^''\n" + "(_)\n" + ":---)\n" + ":-------[\n" + "P-(\n" + "<|\n" + "<%)\n" + "(pi)\n" + "(pl)\n" + "}:^#)\n" + "[::::]\n" + "****\n" + "+O=-)\n" + ";-\\\n" + "O/\n" + "[-o<\n" + "&&&&\n" + "\\<><>/\n" + "~<:-)\n" + "\\&&&/\n" + ";~[\n" + "(+[ ]-:-)\n" + "=:-(\n" + "Q('.'Q)\n" + ":-($)\n" + "\\%%%/\n" + "=:>)\n" + " (___)0\n" + "/:)\n" + ":-R\n" + "=:7)~~\n" + "=:7(~~\n" + "--- :\n" + ":-C\n" + "~:-(\n" + "()_RED_(>\n" + "(l)\n" + "(k)\n" + "(f)\n" + "}---:o>\n" + "+-(:-)\n" + ">=D\n" + "(})\n" + "<(-_-)>\n" + "[:]\n" + "\\m/>.<\\m/\n" + "\\m/(**)\\m/\n" + "\\m/ >_< \\m/\n" + ">-D\n" + "\\w/^^,\\w/\n" + "9_9\n" + ">>\n" + "=))\n" + "7:)\n" + "7:^]\n" + "@~'~~~\n" + "@~)~~~~\n" + "@>-;--\n" + "@}>-'-,--\n" + "@};-\n" + "@};---\n" + "@}->--\n" + "@)->-\n" + "@->--\n" + "@-}----\n" + "@>;-----\n" + "3:*>\n" + "Y_Y\n" + "T.T\n" + "D=\n" + "D:\n" + "=[\n" + "=(\n" + "(<_>)\n" + ":c\n" + "*<|:-{)}\n" + "*<|:-)\n" + "*<|:^) }\n" + "*<:-)\n" + ":-7\n" + "^o)\n" + "*!#*!^*&:-)\n" + "!:-)\n" + "8<\n" + ")8-)\n" + "\\';./\n" + "(-_-)\n" + "::=))\n" + "8==8\n" + ":-i\n" + "[-x\n" + "<(((\">\n" + ",:-)\n" + "o_o\n" + "35277\n" + "=o\n" + "*SHOCKED*\n" + "+-(\n" + ":-V\n" + "(*^_^*)\n" + "(-::-)\n" + "=+o()\n" + ":-&\n" + ":-Y\n" + "8-}\n" + "(c:\n" + "~:-P\n" + "o{-<]:\n" + "O-\\-<]:\n" + "0-<-<):\n" + "o<[^(\n" + ";-/\n" + "':-/\n" + "8-X\n" + "(>.<) zzZ\n" + "(s)\n" + "u_u\n" + "#)\n" + "#(,'%/)\n" + "C:\n" + "=o)\n" + "[______]\n" + ":|)\n" + "(^_^)\n" + "+:-)\n" + "=:-#}\n" + "(:-#\n" + "):-)\n" + "g-)\n" + ":^J\n" + "^&^\n" + ":-1\n" + ":^,\n" + ";^)\n" + ":-d\n" + "@x\n" + "(sn)\n" + "~~~~8}\n" + "(so)\n" + "X P\n" + "=.=\n" + "(X^(*\n" + "}:8>\n" + ":-M\n" + ":-W\n" + ":-`\n" + ":-( <|\n" + "(*)\n" + "*~*\n" + "/ \\\n" + ":-p\n" + ":pp\n" + "$:-$\n" + "*STOP*\n" + "(st)\n" + "-.-\n" + "@?@\n" + "&;-P\n" + "B:-)\n" + "B :-)\n" + "(8-{)}\n" + "/8^{~\n" + "(#)\n" + " /'\n" + "\\m/<(^_^)>\\m/\n" + "*SURPRISED*\n" + "{:o\n" + ":o\n" + ":#\n" + "`:-)\n" + "oxx:{}:::::::>\n" + "/________|___|\n" + "---(|||]==[]\n" + "=;\n" + ":-{ }\n" + ":^y\n" + ":-8\n" + ":-v\n" + "&-|\n" + "(t)\n" + "-(:)(0)=8\n" + ">[I\n" + "(:>-<\n" + ":-)---\n" + "*-)\n" + "(n)\n" + "*THUMBS UP*\n" + "(y)\n" + "^\n" + "=_=\n" + "*TIRED*\n" + "(:|\n" + "0000(0)(0)0000\n" + "8-;)\n" + ":-J\n" + ":-A\n" + "*!#*!^*&:-\n" + "=-HHHH\n" + ">:-|\n" + ":-)))\n" + "@:I\n" + "<:>==\n" + "(tu)\n" + "=-o\n" + "(o|o)\n" + "(um)\n" + "X:-/\n" + "=):-)\n" + ":\\\n" + "**==\n" + "|:-|\n" + ">.<\n" + ">:*\n" + "}:(\n" + ":<|\n" + "::-)\n" + ":u)\n" + ":n)\n" + "}(:-(\n" + "@,.,@\n" + "(';.;')\n" + "%*}\n" + ":-[]\n" + "(:-\\\n" + "(o^_^)o\n" + ":-w\n" + ":-h\n" + ":-)X\n" + "d:)\n" + "{(:-)\n" + "B-|\n" + "(|:-)\n" + "]-I\n" + "(8-)\n" + ":-)8\n" + "-_-\n" + "*WHINING*\n" + ":-\"\n" + ";^?\n" + "(w)\n" + "())=(\n" + "(`_^)\n" + ";p\n" + ";O)\n" + ";-P\n" + "~_^\n" + "<):^/\n" + "*|:-)\n" + "8<:-)\n" + "8 :-)\n" + "-=#:-)\n" + "-=#:-) /\n" + ":-)8 :\n" + ",-}\n" + "(xx)\n" + "_/)\n" + "|-()\n" + "|^O\n" + ">:O\n" + ":-(0)\n" + "=:-0\n" + "@@(: l)\n" + ":-l\n" + "<(-.-)>\n" + ":-( )\n" + ":--------)\n" + "(@ @)\n" + ":-0>\n" + "|-P\n" + "->=:-)"; final Pattern pattern = Pattern.compile(regex); 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