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

/
/
g

Test String

Substitution

Processing...

Code Generator

Generated Code

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"( \d{1,2})5(\d{2} )" test_str = ("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 ") subst = "\\1:\\2" # You can manually specify the number of replacements by changing the 4th argument result = re.sub(regex, subst, test_str, 0) if result: print (result) # Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

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