Regular Expressions 101

Save & Share

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
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
Processing...

Test String

Substitution
Processing...

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 = "( \\d{1,2})5(\\d{2} )"; final String string = "part1.htm\">MiniTOC</a><a class=\"toc1\" \n" + "part2.htm\">2/5/18, 4549 PM \n" + "part3.htm\">2/7/18, 4516 PM \n" + "part4.htm\">2/15/18, 2557 PM \n" + "part5.htm\">2/20/18, 2507 PM \n" + "part6.htm\">2/21/18, 3502 PM \n" + "part7.htm\">2/21/18, 5506 PM \n" + "part8.htm\">2/22/18, 10503 AM \n" + "part9.htm\">2/22/18, 1543 PM \n" + "part10.htm\">2/27/18, 3514 PM \n" + "part11.htm\">2/28/18, 2533 PM \n" + "part12.htm\">3/1/18, 1515 PM \n" + "part13.htm\">3/1/18, 2527 PM \n" + "part14.htm\">3/1/18, 6547 PM \n" + "part15.htm\">3/1/18, 8557 PM \n" + "part16.htm\">3/4/18, 11540 AM \n" + "part17.htm\">3/5/18, 4546 PM \n" + "part18.htm\">3/6/18, 12548 PM \n" + "part19.htm\">3/6/18, 2518 PM \n" + "part20.htm\">3/7/18, 12535 PM \n" + "part21.htm\">3/8/18, 8500 AM \n" + "part22.htm\">3/8/18, 10521 AM \n" + "part23.htm\">3/8/18, 12559 PM \n" + "part24.htm\">3/9/18, 10540 AM \n" + "part25.htm\">3/9/18, 1501 PM \n" + "part26.htm\">3/9/18, 6514 PM \n" + "part27.htm\">3/12/18, 8514 PM \n" + "part28.htm\">3/14/18, 12520 PM \n" + "part29.htm\">3/14/18, 2537 PM \n" + "part30.htm\">3/15/18, 2514 PM \n" + "part31.htm\">3/15/18, 3549 PM \n" + "part32.htm\">3/21/18, 11506 AM \n" + "part33.htm\">3/22/18, 2518 PM \n" + "part34.htm\">3/22/18, 3523 PM \n" + "part35.htm\">3/22/18, 4554 PM \n" + "part36.htm\">3/26/18, 3543 PM \n" + "part37.htm\">4/2/18, 1555 PM \n" + "part38.htm\">4/2/18, 4532 PM \n" + "part39.htm\">4/5/18, 1557 PM \n" + "part40.htm\">4/6/18, 4536 PM \n" + "part41.htm\">4/6/18, 5540 PM \n" + "part42.htm\">4/6/18, 7501 PM \n" + "part43.htm\">4/7/18, 5524 AM \n" + "part44.htm\">4/16/18, 12525 PM \n" + "part45.htm\">4/17/18, 4502 PM \n" + "part46.htm\">4/23/18, 7520 PM \n" + "part47.htm\">4/25/18, 3527 PM \n" + "part48.htm\">4/25/18, 5513 PM \n" + "part49.htm\">4/26/18, 2534 PM \n" + "part50.htm\">4/26/18, 6513 PM \n" + "part51.htm\">5/1/18, 3523 PM \n" + "part52.htm\">5/3/18, 3540 PM \n" + "part53.htm\">5/4/18, 12539 PM \n" + "part54.htm\">5/8/18, 12539 PM \n" + "part55.htm\">5/8/18, 2549 PM \n" + "part56.htm\">5/9/18, 12506 PM \n" + "part57.htm\">5/15/18, 3525 PM \n" + "part58.htm\">5/23/18, 6545 PM \n" + "part59.htm\">5/24/18, 2559 PM \n" + "part60.htm\">5/24/18, 5523 PM \n" + "part61.htm\">5/26/18, 3509 PM \n" + "part62.htm\">5/27/18, 11519 AM \n" + "part63.htm\">5/30/18, 4554 PM \n" + "part64.htm\">5/26/18, 1507 PM \n" + "part65.htm\">5/31/18, 2558 PM \n" + "part66.htm\">6/7/18, 2546 PM \n" + "part67.htm\">6/11/18, 7531 PM \n" + "part68.htm\">6/12/18, 10547 AM \n" + "part69.htm\">6/12/18, 3529 PM \n" + "part70.htm\">6/13/18, 7536 PM \n" + "part71.htm\">6/14/18, 3527 PM \n" + "part72.htm\">6/19/18, 8507 AM \n" + "part73.htm\">6/19/18, 3528 PM \n" + "part74.htm\">6/19/18, 5519 PM \n" + "part75.htm\">6/20/18, 10507 AM \n" + "part76.htm\">6/21/18, 10545 AM \n" + "part77.htm\">6/21/18, 12544 PM \n" + "part78.htm\">6/21/18, 3534 PM \n" + "part79.htm\">6/23/18, 11506 AM \n" + "part80.htm\">6/23/18, 3505 PM \n" + "part81.htm\">6/23/18, 6500 PM \n" + "part82.htm\">6/24/18, 10535 AM \n" + "part83.htm\">6/24/18, 12556 PM \n" + "part84.htm\">6/25/18, 7517 PM \n" + "part85.htm\">6/26/18, 3517 PM \n" + "part86.htm\">6/26/18, 4559 PM \n" + "part87.htm\">6/27/18, 9551 AM </a><a class=\"toc1\" \n" + "part88.htm\">6/27/18, 11532 AM \n" + "part89.htm\">6/28/18, 4515 PM </a><a class=\"toc1\" \n" + "part90.htm\">7/2/18, 6529 PM \n" + "part91.htm\">7/3/18, 3554 PM \n" + "part92.htm\">7/3/18, 5545 PM \n" + "part93.htm\">7/3/18, 7556 PM \n" + "part94.htm\">7/3/18, 9503 PM \n" + "part95.htm\">7/7/18, 5531 PM \n" + "part96.htm\">7/9/18, 4553 PM \n" + "part97.htm\">7/10/18, 8554 AM \n" + "part98.htm\">7/10/18, 5516 PM \n" + "part99.htm\">7/11/18, 11531 AM \n" + "part100.htm\">7/11/18, 3550 PM \n" + "part101.htm\">7/12/18, 4549 PM \n" + "part102.htm\">7/15/18, 3524 PM \n" + "part103.htm\">7/16/18, 10525 AM \n" + "part104.htm\">7/16/18, 11534 AM \n" + "part105.htm\">7/16/18, 6544 PM \n" + "part106.htm\">7/18/18, 11505 AM \n" + "part107.htm\">7/19/18, 1537 PM \n" + "part108.htm\">7/19/18, 3532 PM \n" + "part109.htm\">7/24/18, 10500 AM \n" + "part110.htm\">7/24/18, 2514 PM \n" + "part111.htm\">7/24/18, 3555 PM \n" + "part112.htm\">7/24/18, 7506 PM \n" + "part113.htm\">8/9/18, 12537 PM \n" + "part114.htm\">8/13/18, 3531 PM \n" + "part115.htm\">8/13/18, 5551 PM \n" + "part116.htm\">8/14/18, 12509 PM \n" + "part117.htm\">8/14/18, 1532 PM \n" + "part118.htm\">8/14/18, 3539 PM \n" + "part119.htm\">8/16/18, 4548 PM \n" + "part120.htm\">8/16/18, 4548 PM \n" + "part121.htm\">8/21/18, 6509 PM \n" + "part122.htm\">8/23/18, 11557 AM \n" + "part123.htm\">8/28/18, 4537 PM \n" + "part124.htm\">8/30/18, 7528 PM \n" + "part125.htm\">8/30/18, 10500 PM \n" + "part126.htm\">9/4/18, 2538 PM \n" + "part127.htm\">9/4/18, 5515 PM \n" + "part128.htm\">9/5/18, 3538 PM \n" + "part129.htm\">9/7/18, 5519 PM \n" + "part130.htm\">9/10/18, 3518 PM \n" + "part131.htm\">9/13/18, 8541 AM \n" + "part132.htm\">9/13/18, 11512 AM \n" + "part133.htm\">9/13/18, 12551 PM \n" + "part134.htm\">9/17/18, 6502 PM \n" + "part135.htm\">9/18/18, 3555 PM \n" + "part136.htm\">9/19/18, 9506 PM \n" + "part137.htm\">9/19/18, 11504 PM \n" + "part138.htm\">9/20/18, 12531 PM \n" + "part139.htm\">9/24/18, 4502 PM \n" + "part140.htm\">9/24/18, 6518 PM \n" + "part141.htm\">9/25/18, 9550 AM \n" + "part142.htm\">9/25/18, 5512 PM \n" + "part143.htm\">9/26/18, 12549 PM \n" + "part144.htm\">9/26/18, 6533 PM \n" + "part145.htm\">9/28/18, 9543 AM \n" + "part146.htm\">10/1/18, 7558 AM \n" + "part147.htm\">10/1/18, 3538 PM \n" + "part148.htm\">10/3/18, 10551 AM \n" + "part149.htm\">10/3/18, 3521 PM \n" + "part150.htm\">10/3/18, 4528 PM \n" + "part151.htm\">10/3/18, 5529 PM \n" + "part152.htm\">10/8/18, 11521 AM \n" + "part153.htm\">10/8/18, 2526 PM \n" + "part154.htm\">10/8/18, 4538 PM \n" + "part155.htm\">10/9/18, 1504 PM \n" + "part156.htm\">10/9/18, 4529 PM \n" + "part157.htm\">10/9/18, 6552 PM \n" + "part158.htm\">10/10/18, 6509 PM \n" + "part159.htm\">10/11/18, 1544 PM \n" + "part160.htm\">10/11/18, 3527 PM \n" + "part161.htm\">10/11/18, 5552 PM \n" + "part162.htm\">10/11/18, 8500 PM \n" + "part163.htm\">10/16/18, 2515 PM \n" + "part164.htm\">10/16/18, 4501 PM \n" + "part165.htm\">10/18/18, 10541 AM \n" + "part166.htm\">10/18/18, 1505 PM \n" + "part167.htm\">10/18/18, 4524 PM \n" + "part168.htm\">10/18/18, 7537 PM \n" + "part169.htm\">10/19/18, 11532 AM \n" + "part170.htm\">10/22/18, 9539 AM \n" + "part171.htm\">10/22/18, 10543 AM \n" + "part172.htm\">10/22/18, 12514 PM \n" + "part173.htm\">10/22/18, 2523 PM \n" + "part174.htm\">10/24/18, 10506 AM \n" + "part175.htm\">10/24/18, 12535 PM \n" + "part176.htm\">10/24/18, 5558 PM \n" + "part177.htm\">11/1/18, 3525 PM \n" + "part178.htm\">11/1/18, 3525 PM \n" + "part179.htm\">11/5/18, 11509 AM \n" + "part180.htm\">11/5/18, 1544 PM \n" + "part181.htm\">11/8/18, 6521 PM \n" + "part182.htm\">11/9/18, 11538 AM \n" + "part183.htm\">11/10/18, 11525 AM \n" + "part184.htm\">11/10/18, 2531 PM \n" + "part185.htm\">11/14/18, 10530 AM \n" + "part186.htm\">11/14/18, 2505 PM \n" + "part187.htm\">11/14/18, 4521 PM \n" + "part188.htm\">11/14/18, 5527 PM \n" + "part189.htm\">11/15/18, 11541 AM \n" + "part190.htm\">11/15/18, 12558 PM \n" + "part191.htm\">11/18/18, 8559 PM \n" + "part192.htm\">11/19/18, 11502 AM \n" + "part193.htm\">11/19/18, 12512 PM \n" + "part194.htm\">11/26/18, 12537 PM \n" + "part195.htm\"> 11/27/18, 3535 PM \n" + "part196.htm\">11/28/18, 9535 AM \n" + "part197.htm\">11/28/18, 12551 PM \n" + "part198.htm\">11/29/18, 11541 AM \n" + "part199.htm\">12/3/18, 11512 AM \n" + "part200.htm\">12/3/18, 4501 PM \n" + "part201.htm\">12/4/18, 12510 PM \n" + "part202.htm\">12/4/18, 2504 PM \n" + "part203.htm\">12/4/18, 3559 PM \n" + "part204.htm\">12/7/18, 11548 AM \n" + "part205.htm\">12/7/18, 1542 PM \n" + "part206.htm\">12/10/18, 12521 PM \n" + "part207.htm\">12/11/18, 12518 PM \n" + "part208.htm\">12/14/18, 9517 AM \n" + "part209.htm\">12/14/18, 11554 AM \n" + "part210.htm\">12/14/18, 1547 PM \n" + "part211.htm\">12/14/18, 3530 PM \n" + "part212.htm\">12/14/18, 9531 PM \n" + "part213.htm\">12/16/18, 6506 PM \n" + "part214.htm\">12/17/18, 11556 AM \n" + "part215.htm\">12/19/18, 4500 PM \n" + "part216.htm\">12/20/18, 2558 PM \n" + "part217.htm\">12/20/18, 7516 PM \n" + "part218.htm\">12/21/18, 4516 PM \n" + "part219.htm\">12/21/18, 7510 PM \n" + "part220.htm\">12/25/18, 10518 PM \n" + "part221.htm\">1/1/19, 10540 AM \n" + "part222.htm\">1/1/19, 3521 PM \n" + "part223.htm\">1/3/19, 6501 PM \n" + "part224.htm\">1/4/19, 11540 AM \n" + "part225.htm\">1/4/19, 2501 PM \n" + "part226.htm\">1/4/19, 3555 PM \n" + "part227.htm\">1/6/19, 2519 PM \n" + "part228.htm\">1/7/19, 9531 AM \n" + "part229.htm\">1/7/19, 11527 AM \n" + "part230.htm\">1/7/19, 9532 PM \n" + "part231.htm\">1/8/19, 10534 PM \n" + "part232.htm\">1/9/19, 1512 PM \n" + "part233.htm\">1/10/19, 9551 AM \n" + "part234.htm\">1/10/19, 5537 PM \n" + "part235.htm\">1/11/19, 12526 PM \n" + "part236.htm\">1/14/19, 12522 PM \n" + "part237.htm\">1/13/19, 6555 PM \n" + "part238.htm\">1/11/19, 1557 PM \n" + "part239.htm\">1/17/19, 9539 AM \n" + "part240.htm\">1/17/19, 3513 PM \n" + "part241.htm\">1/18/19, 1505 PM \n" + "part242.htm\">1/18/19, 2549 PM \n" + "part243.htm\">1/22/19, 9557 AM \n" + "part244.htm\">1/22/19, 3530 PM \n" + "part245.htm\">1/24/19, 12532 PM \n" + "part246.htm\">1/24/19, 2554 PM \n" + "part247.htm\">1/25/19, 2554 PM \n" + "part248.htm\">1/29/19, 9552 AM \n" + "part249.htm\">1/30/19, 8528 AM \n" + "part250.htm\">1/30/19, 11550 AM \n" + "part251.htm\">2/1/19, 9506 AM \n" + "part252.htm\">2/1/19, 11529 AM \n" + "part253.htm\">2/1/19, 12557 PM \n" + "part254.htm\">2/1/19, 4522 PM \n" + "part255.htm\">2/2/19, 8519 AM \n" + "part256.htm\">2/5/19, 1500 PM \n" + "part257.htm\">2/5/19, 3537 PM \n" + "part258.htm\">2/7/19, 2534 PM \n" + "part259.htm\">2/8/19, 3526 PM \n" + "part260.htm\">2/8/19, 5510 PM \n" + "part261.htm\">2/11/19, 4538 PM \n" + "part262.htm\">2/12/19, 10555 AM \n" + "part263.htm\">2/13/19, 2514 PM \n" + "part264.htm\">2/13/19, 4533 PM \n" + "part265.htm\">2/13/19, 8537 PM \n" + "part266.htm\">2/14/19, 8544 AM \n" + "part267.htm\">2/14/19, 10516 AM \n" + "part268.htm\">2/14/19, 11543 AM \n" + "part269.htm\">2/16/19, 2501 PM \n" + "part270.htm\">2/16/19, 3541 PM \n" + "part271.htm\">2/19/19, 7501 PM \n" + "part272.htm\">2/20/19, 10526 AM \n" + "part273.htm\">2/20/19, 12501 PM \n" + "part274.htm\">2/20/19, 4534 PM \n" + "part275.htm\">2/24/19, 10550 AM \n" + "part276.htm\">2/24/19, 12506 PM \n" + "part277.htm\">2/24/19, 12506 PM \n" + "part278.htm\">2/25/19, 1541 PM \n" + "part279.htm\">2/25/19, 4554 PM \n" + "part280.htm\">2/28/19, 2522 PM \n" + "part281.htm\">3/6/19, 12522 PM \n" + "part282.htm\">3/7/19, 12522 PM \n" + "part283.htm\">3/7/19, 4517 PM \n" + "part284.htm\">3/8/19, 2534 PM \n" + "part285.htm\">3/12/19, 7514 PM \n" + "part286.htm\">3/13/19, 11546 AM \n" + "part287.htm\">3/13/19, 12552 PM \n" + "part288.htm\">3/14/19, 2502 PM \n" + "part289.htm\">3/15/19, 12545 PM \n" + "part290.htm\">3/15/19, 4553 PM \n" + "part291.htm\">3/18/19, 10522 AM \n" + "part292.htm\">3/18/19, 11544 AM \n" + "part293.htm\">3/18/19, 2536 PM \n" + "part294.htm\">3/18/19, 4513 PM \n" + "part295.htm\">3/19/19, 10506 AM \n" + "part296.htm\">3/19/19, 1543 PM \n" + "part297.htm\">3/20/19, 10530 AM \n" + "part298.htm\">3/24/19, 11516 AM \n" + "part299.htm\">3/24/19, 1533 PM \n" + "part300.htm\">3/26/19, 8530 AM \n" + "part301.htm\">3/28/19, 9507 PM \n" + "part302.htm\">3/29/19, 8523 AM \n" + "part303.htm\">4/2/19, 10504 AM \n" + "part304.htm\">4/2/19, 11534 AM \n" + "part305.htm\">4/2/19, 1508 PM "; final String subst = "\\1:\\2"; final Pattern pattern = Pattern.compile(regex); final Matcher matcher = pattern.matcher(string); // The substituted value will be contained in the result variable final String result = matcher.replaceAll(subst); System.out.println("Substitution result: " + 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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html