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

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"(?<time>\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}) (?<xferTime>\d*) (?<remoteHost>\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b) (?<fileSize>\d*) (?<fileName>\S*) (?<transferType>[a|b]) (?<specialActionFlag>\S{1}) (?<direction>\S{1}) (?<accessMode>\S{1}) (?<userName>\S*) (?<serviceName>\S*) (?<authenticationMethod>\S*) (?<authenticatedUserId>\S*) (?<completionStatus>\S*)" test_str = ("Fri Aug 29 11:47:02 2014 1 85.118.235.147 815472 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_001.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:03 2014 0 172.16.2.254 1678551 /u01/clients/roboturls/source/live-stream/104184.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:04 2014 1 85.118.235.147 831405 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_002.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:05 2014 1 85.118.235.147 727777 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_003.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:07 2014 1 85.118.235.147 827127 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_004.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:08 2014 1 85.118.235.147 878678 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_005.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:10 2014 0 172.16.2.254 1678551 /u01/clients/roboturls/source/live-stream/104185.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:10 2014 1 85.118.235.147 782214 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_006.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:11 2014 1 85.118.235.147 893540 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_007.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:13 2014 1 85.118.235.147 873624 /u01/clients/flynet/source/live-streaming/FLY_1095206_PEREZ_HILTON_008.jpg b _ i r flynet ftp 0 * c\n" "Fri Aug 29 11:47:17 2014 0 172.16.2.254 1678551 /u01/clients/roboturls/source/live-stream/104186.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:24 2014 0 172.16.2.254 1678109 /u01/clients/roboturls/source/live-stream/104187.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:26 2014 0 206.150.180.100 639450 /u01/clients/reuters/source/stream/2014-08-29T114707Z_175098360_GM1EA8T1IUK01_RTRMADP_3_FILMFESTIVAL-VENICE.JPG b _ i r reuters ftp 0 * c\n" "Fri Aug 29 11:47:26 2014 2 216.169.250.1 2224553 /u01/clients/gettyimages/source/live-feed/454324358.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:31 2014 0 172.16.2.254 1677404 /u01/clients/roboturls/source/live-stream/104188.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:35 2014 4 216.169.250.1 2905344 /u01/clients/gettyimages/source/live-feed/454324364.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:38 2014 0 172.16.2.254 1678551 /u01/clients/roboturls/source/live-stream/104189.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:42 2014 9 216.169.250.1 4110945 /u01/clients/gettyimages/source/live-feed-news/454324356.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:50 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104190.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:47:53 2014 3 216.169.250.1 2281991 /u01/clients/gettyimages/source/live-feed-news/454324374.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:56 2014 4 216.169.250.1 2957898 /u01/clients/gettyimages/source/live-feed-news/454324366.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:57 2014 1 216.169.250.1 1538546 /u01/clients/gettyimages/source/live-feed/454324370.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:47:58 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104191.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:03 2014 2 216.169.250.1 1613416 /u01/clients/gettyimages/source/live-feed/454324382.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:48:05 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104192.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:12 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104193.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:19 2014 0 172.16.2.254 556497 /u01/clients/roboturls/source/live-stream/104194.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:26 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104195.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:27 2014 4 216.169.250.1 1675308 /u01/clients/gettyimages/source/live-feed/454324378.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:48:33 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104196.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:36 2014 3 216.169.250.1 2519001 /u01/clients/gettyimages/source/live-feed/454324376.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:48:36 2014 4 216.169.250.1 2650387 /u01/clients/gettyimages/source/live-feed/454324368.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:48:40 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104197.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:48 2014 0 172.16.2.254 547878 /u01/clients/roboturls/source/live-stream/104198.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:48:49 2014 1 216.169.250.1 728279 /u01/clients/gettyimages/source/live-feed-sport/454324380.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:49:00 2014 0 172.16.2.254 575100 /u01/clients/roboturls/source/live-stream/104199.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:07 2014 0 172.16.2.254 556497 /u01/clients/roboturls/source/live-stream/104200.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:19 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104201.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:31 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104202.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:37 2014 0 89.187.64.162 2251248 /u01/clients/wenn/source/live-stream/wenn21657242.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:38 2014 0 89.187.64.162 1930371 /u01/clients/wenn/source/live-stream/wenn21657243.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:41 2014 2 89.187.64.162 2181480 /u01/clients/wenn/source/live-stream/wenn21657244.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:43 2014 1 89.187.64.162 2147554 /u01/clients/wenn/source/live-stream/wenn21657245.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:43 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104203.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:44 2014 4 209.63.42.82 1403942 /u01/clients/corbis/source/stream/42-61613672.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:49:44 2014 3 209.63.42.82 1259254 /u01/clients/corbis/source/stream/42-61613671.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:49:47 2014 3 89.187.64.162 2241632 /u01/clients/wenn/source/live-stream/wenn21657246.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:49 2014 4 209.63.42.82 1157640 /u01/clients/corbis/source/stream/42-61613673.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:49:50 2014 2 89.187.64.162 1949372 /u01/clients/wenn/source/live-stream/wenn21657247.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:51 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104204.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:52 2014 1 89.187.64.162 2381202 /u01/clients/wenn/source/live-stream/wenn21657248.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:54 2014 1 89.187.64.162 2355449 /u01/clients/wenn/source/live-stream/wenn21657249.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:55 2014 1 89.187.64.162 2427919 /u01/clients/wenn/source/live-stream/wenn21657250.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:56 2014 1 89.187.64.162 2193319 /u01/clients/wenn/source/live-stream/wenn21657251.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:49:57 2014 6 216.169.250.1 2738054 /u01/clients/gettyimages/source/live-feed/454324398.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:49:58 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104205.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:49:58 2014 1 89.187.64.162 2255569 /u01/clients/wenn/source/live-stream/wenn21657252.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:00 2014 1 89.187.64.162 2386861 /u01/clients/wenn/source/live-stream/wenn21657253.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:01 2014 0 89.187.64.162 2051803 /u01/clients/wenn/source/live-stream/wenn21657254.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:02 2014 1 89.187.64.162 2342745 /u01/clients/wenn/source/live-stream/wenn21657255.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:03 2014 4 209.63.42.82 1332076 /u01/clients/corbis/source/stream/42-61613678.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:04 2014 1 89.187.64.162 2479907 /u01/clients/wenn/source/live-stream/wenn21657256.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:05 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104206.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:50:05 2014 3 209.63.42.82 1309323 /u01/clients/corbis/source/stream/42-61613680.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:05 2014 0 89.187.64.162 1994204 /u01/clients/wenn/source/live-stream/wenn21657257.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:07 2014 1 89.187.64.162 2019528 /u01/clients/wenn/source/live-stream/wenn21657258.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:09 2014 1 89.187.64.162 2175488 /u01/clients/wenn/source/live-stream/wenn21657259.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:10 2014 1 89.187.64.162 2494267 /u01/clients/wenn/source/live-stream/wenn21657260.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:11 2014 0 89.187.64.162 2135117 /u01/clients/wenn/source/live-stream/wenn21657261.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:12 2014 0 172.16.2.254 639018 /u01/clients/roboturls/source/live-stream/104207.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:50:13 2014 1 89.187.64.162 2261582 /u01/clients/wenn/source/live-stream/wenn21657262.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:14 2014 0 89.187.64.162 2351709 /u01/clients/wenn/source/live-stream/wenn21657263.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:14 2014 6 209.63.42.82 1234207 /u01/clients/corbis/source/stream/42-61613682.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:15 2014 0 89.187.64.162 1608221 /u01/clients/wenn/source/live-stream/wenn21657264.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:16 2014 0 89.187.64.162 1942966 /u01/clients/wenn/source/live-stream/wenn21657265.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:16 2014 8 209.63.42.82 1511003 /u01/clients/corbis/source/stream/42-61613683.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:17 2014 1 89.187.64.162 2035558 /u01/clients/wenn/source/live-stream/wenn21657266.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:17 2014 6 209.63.42.82 1181848 /u01/clients/corbis/source/stream/42-61613685.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:18 2014 6 209.63.42.82 1244414 /u01/clients/corbis/source/stream/42-61613687.jpg b _ i r corbis ftp 0 * c\n" "Fri Aug 29 11:50:18 2014 1 89.187.64.162 1897281 /u01/clients/wenn/source/live-stream/wenn21657267.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:20 2014 0 172.16.2.254 868345 /u01/clients/roboturls/source/live-stream/104208.jpg b _ i r roboturls ftp 0 * c\n" "Fri Aug 29 11:50:20 2014 1 89.187.64.162 2253115 /u01/clients/wenn/source/live-stream/wenn21657268.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:21 2014 0 89.187.64.162 2014465 /u01/clients/wenn/source/live-stream/wenn21657269.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:21 2014 12 216.169.250.1 2372836 /u01/clients/gettyimages/source/live-feed-sport/454324396.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:50:22 2014 0 89.187.64.162 2314804 /u01/clients/wenn/source/live-stream/wenn21657270.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:23 2014 0 89.187.64.162 2475307 /u01/clients/wenn/source/live-stream/wenn21657271.jpg b _ i r wenn ftp 0 * c\n" "Fri Aug 29 11:50:24 2014 0 206.150.180.100 721643 /u01/clients/reuters/source/stream/2014-08-29T115000Z_681847560_GM1EA8T1IXL01_RTRMADP_3_FILMFESTIVAL-VENICE.JPG b _ i r reuters ftp 0 * c\n" "Fri Aug 29 11:50:24 2014 15 216.169.250.1 2851176 /u01/clients/gettyimages/source/live-feed/454324418.jpg b _ i r gettyimages ftp 0 * c\n" "Fri Aug 29 11:50:27 2014 0 172.16.2.254 868345 /u01/clients/roboturls/source/live-stream/104209.jpg b _ i r roboturls ftp 0 * c") matches = re.finditer(regex, test_str) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # 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