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
  • Match everything enclosed
    (?:...)
  • Capture everything enclosed
    (...)
  • 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

@
@
gmi

Test String

Code Generator

Generated Code

import Foundation let pattern = #"/(?:images)(?:/[0-9A-Za-z_]+){6,14}\.(?:avi|bmp|gif)$"# let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive]) let testString = ##""" # True Positives: /images/SSzSTaOcH1pR_2F/IWb3AQ88iG_2Fz3s_2/FYkkdHOcR/pRMVw2WWbSuH7xwk6D_2/B3mPLWnQSf9j_2FbJ9d/mGZcHG2v_2FOV9FT3uU1j4/Diayqm3GEgLZw/n5GTPplw/QLepJPJJ9aQEAyFymOCZWZT/aGYTa7jBoo/9rw_2BTif5Y_2BfXr/M4lxihZ_2FtN5p/t.avi /images/Uc2TJpGPts/FfQPYEIa9cTp5xG8L/AUMvwh_2BfkS/KHH9nBajBga/CFOseePlQGP3uA/KJPe11hiQDHCk_2BbeiOL/YuHqJsSILkt66ATG/9wURfqTdnBvA0M7/Iy1RarqI0V_2F8d2E4/3z4rUWOPB/P4F9VFvkukW6Xm1XhKms/nSgG4NlF2mIvH/6.avi /images/umwQSAMXBic2mXoSrqk_/2FzFekIXpsMMTRrx_2F/fLHCsjJmWm9PMC7A59Fy80/dF7a7Un_2Fait/6eoAx1tZ/B3rQrs2tKNi2VRSY7LBmF6x/rmo94zoC13/ucKPyoH8y64tmDLQF/Kcz7twbSaC7z/XCckVlQlv5m/a61C9UcnstXyA2zg/Gs9Nzk.avi /images/Ni18Y6iE7It/2n7ExsnSSVD_2B/MZmcabxQ0PN5pAfZiP5tR/8uWdxGPb7Lp1Xq9N/ytalso_2FocgBTt/WVGwqXZT52jiw_2Fng/ACRK_2BMb/siSbmUR4eCjr_2FxBE_2/F_2BRSuCdY3cNhAkTe3/ih34K9F_2BEPab_2Fe3LQL/ojw.avi /images/l3Y26TEfZZtcnDSt/ddQOnOnTdex_2BH/6_2BaB_2FGxpZGxJ9f/nXCPpX_2F/nMNkrITxWHWhPJK1_2FN/TNy4JY142LoSWkBMExR/_2BM6ps1mPddOe_2BczMsO/5I6znf8y_2FFp/9jH6ttQr/P0psvy6e26JSx_2BRYxk6gh/25c82.avi /images/1XW_2B4qyAv/pqTrqea7zKOs_2/BZlBIeIwtfTE0x2vPFD_2/F7UZR4k_2BlBEe9I/kC_2FNF_2F3r5J8/UtTs6gdMxiF5SaGOIZ/dYDiGoBJ_/2BcN0030BbD7eoSabYvI/yp9brMdRbdPenmP_2Fs/6uc3bn1a5QX7m8ALpeGd4/um.avi /images/cB0lMzhbUUg/vm7oVW_2Fhj_2F/lQjfKGqAVdfcnu2sXFdC7/THvzBcqH5m_2FI75/fnFL_2BorF_2BvI/8yW61N3fttz460_2F_/2FhGmXltV/1bm6pG_2BnsMGxbZ2xpO/7raxJ4PYda2fPyAgrmy/XlE02KtryKpvVFu/jTQbk56b.avi /images/g7FABv_2FR_2/FnHRMcgweHq/dhC23akfXzbjt_/2F_2BLBGhh_2FUE6mgAXt/KOhfFa4_2Bt6gS1O/j1ladWZK5wlMTnZ/vDTw8oDe0btkHk_2Fv/mogXU5s2w/BBWv1En7OIOVKUkf09Q3/btY5bLH6G72tZqjTiIy/o5DDQpZH/w.avi /images/_2Bl_2BMRb/a3_2FQ92jJElqNiOw/z6naCrA4bLTD/YbO0t9C5YdG/zOJttceYmYpA9V/G0dxooxkcsfXmIEspFbIe/fpDLSz4TVxRb2n15/zruH59X0O_2BLBp/tMnoxmJH6RvqjTP_2F/QsVv3lBeD/L33vGXGyi/CVa2WgUm.avi /images/aiXIa28QV6duat/PF_2BY9stc2V0NdiiPtOK/Lsb7S_2BfaOIiDlf/WGVj1o4_2FOYves/9xJ_2FDB1nwuG2_2FQ/OyxKYJEL6/vLpbY5jgEX999CYMCfS6/Al4ZqesjAl9QBegDyJg/jjxapq6x5O3DBHsTEJOzpJ/tVm_2FeF.avi /images/vrr2gEMQ7A_2F/2HGbts_2/F1cYDlYjN6LAIgW4kfENBj7/lnlQ0IMnK9/tlye_2FPAI7hHEoqr/KHY_2FaqPE3k/NjxpJjHFFcc/57VwwYiLK_2BPc/4Wr0Sr2LilKPbvLWDJz5K/a2TruFWYtKFKhBES/S4MM3kzZo/qTblhD.avi /images/5c5okUWKJppqYL4VbI/Ey4dHut6d/_2BzLMLQy0AkxtDusGXv/1oamckZl6zmHHIASZFD/YgYf0l03PifEBnza41mY_2/Be_2FtvopxQPs/r1ntpj7_/2BmQINtgkjBEWKzH8iHaHPu/_2FW2lwBHj/YrCDjZaw7bt/TSO2YQu.avi /images/_2BqxB9j3D9EyzzS6e/qvA650pyx/9SQGxWULPmpKVZNgk8v2/YrI_2BAyWUIff7maZ_2/FaASabieAtfbe4m1rFiJxN/FqV3EL5OpKO4X/ffhC9rry/lxo2gyk6npFwe_2FkRYZiFm/WFsxQ7JprP/q_2BNFjfa4z/SvqZvMq.avi /images/tYmQBUNI4bewRyYkfY_2B0J/665q9ya_2B/RfQJ9MEVufCMLjqpj/IxWZB4p64S_2/FuOXUTNsWzB/5WZ_2B1fnUBoZH/aGu0ViWu4Vy3hDjdp0AMX/PjYNZt36f1nmnz5w/_2Fca0hwgPblgMa/QdfwlfmCfE8jG/GWgtboBd.avi /images/U2gVFoeT1Sh8S/MEPSTiZr/4CQUFnt0PKuoA6ryZ7prmCy/28x4Y4juyR/iOu_2BO7ntaBt9pbl/wMR2T0XklaIA/NX_2FNcUQGu/AwlVRGqUEbo6rb/aL2dHN_2B1LtFcxZL9ruN/Jw9McX7DwaQMmB8q/0zX_2BgUAH/ZEQ.avi /images/xpaDbKXQFg_2BbGq0OgIGM/k0avQoTQbhC7l/cKoPY7iz/9NWH3HyJwvagKg5cZohSXHC/MNqXedjd3_/2FZAPS3JxPFwSmfq4/46ZDpx2uzSeH/bg4FMpH_2Fo/teCO81iGeNlENc/Gp3AKmjhVIC4Na3Ey4A3k/_2FCxVv.avi /images/gs6KAyStbV4/LM3wQ5emEnbE01/IL9zHiT2RgLhXqiwjQZMz/VTgHCVDIO3bWiue_/2FLhRoKN6H7_2Ba/lTItMea925t9CKW5z1/2s0ZGgd8K/SkjXs89EoBG025XxMsWq/KWvZpgqJaC1jvU8xQvB/gtBXHgU3/_2Bk0.avi /images/uBxH2MFy6S/hg55JPrbSW8z08kmV/1zIZTmRDciS2/THzW_2BExk3/nOo4z84r5bzl6K/InG1GFDsetdgpjObwoX9i/dT1Z30Sqb7sHvH8i/53pGHUjybAZn5Wx/pxD8psftbSu5AQPXR_/2F_2Fn5Ptt4H5vE/timxEQW.avi /images/ZKL04FltK/cYJO06Am_2BTuevh09sh/kcX_2BsXipixC0c4kWD/PsnIjOEzte2ZlglOrOzMsM/niPc4wFeXTQIH/y3fjwgiw/HIXusIj0BR5bnBgnfFdDTYp/LzPWCgwZtD/FmOSnVhu6V5BTBA2C/Saxpo5FD7/SALr.avi /images/bqOIi0Qqmbsku/iC2ceSPq/qditqiLXeKOytyo58Iga/KtJBIuhqsLzYH01Zz7LP/Oma_2BqMvNi39Jf/cBCvfx.bmp # False Positives: /templates/system/images/Jiduasdqwqnwd.rar /images/1 /images/2 /images/3 """## let stringRange = NSRange(location: 0, length: testString.utf16.count) let matches = regex.matches(in: testString, range: stringRange) var result: [[String]] = [] for match in matches { var groups: [String] = [] for rangeIndex in 1 ..< match.numberOfRanges { let nsRange = match.range(at: rangeIndex) guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue } let string = (testString as NSString).substring(with: nsRange) groups.append(string) } if !groups.isEmpty { result.append(groups) } } print(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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression