# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"/(?:images)(?:/[0-9A-Za-z_]+){6,14}\.(?:avi|bmp|gif)$"
test_str = ("# True Positives:\n"
"/images/SSzSTaOcH1pR_2F/IWb3AQ88iG_2Fz3s_2/FYkkdHOcR/pRMVw2WWbSuH7xwk6D_2/B3mPLWnQSf9j_2FbJ9d/mGZcHG2v_2FOV9FT3uU1j4/Diayqm3GEgLZw/n5GTPplw/QLepJPJJ9aQEAyFymOCZWZT/aGYTa7jBoo/9rw_2BTif5Y_2BfXr/M4lxihZ_2FtN5p/t.avi\n"
"/images/Uc2TJpGPts/FfQPYEIa9cTp5xG8L/AUMvwh_2BfkS/KHH9nBajBga/CFOseePlQGP3uA/KJPe11hiQDHCk_2BbeiOL/YuHqJsSILkt66ATG/9wURfqTdnBvA0M7/Iy1RarqI0V_2F8d2E4/3z4rUWOPB/P4F9VFvkukW6Xm1XhKms/nSgG4NlF2mIvH/6.avi\n"
"/images/umwQSAMXBic2mXoSrqk_/2FzFekIXpsMMTRrx_2F/fLHCsjJmWm9PMC7A59Fy80/dF7a7Un_2Fait/6eoAx1tZ/B3rQrs2tKNi2VRSY7LBmF6x/rmo94zoC13/ucKPyoH8y64tmDLQF/Kcz7twbSaC7z/XCckVlQlv5m/a61C9UcnstXyA2zg/Gs9Nzk.avi\n"
"/images/Ni18Y6iE7It/2n7ExsnSSVD_2B/MZmcabxQ0PN5pAfZiP5tR/8uWdxGPb7Lp1Xq9N/ytalso_2FocgBTt/WVGwqXZT52jiw_2Fng/ACRK_2BMb/siSbmUR4eCjr_2FxBE_2/F_2BRSuCdY3cNhAkTe3/ih34K9F_2BEPab_2Fe3LQL/ojw.avi\n"
"/images/l3Y26TEfZZtcnDSt/ddQOnOnTdex_2BH/6_2BaB_2FGxpZGxJ9f/nXCPpX_2F/nMNkrITxWHWhPJK1_2FN/TNy4JY142LoSWkBMExR/_2BM6ps1mPddOe_2BczMsO/5I6znf8y_2FFp/9jH6ttQr/P0psvy6e26JSx_2BRYxk6gh/25c82.avi\n"
"/images/1XW_2B4qyAv/pqTrqea7zKOs_2/BZlBIeIwtfTE0x2vPFD_2/F7UZR4k_2BlBEe9I/kC_2FNF_2F3r5J8/UtTs6gdMxiF5SaGOIZ/dYDiGoBJ_/2BcN0030BbD7eoSabYvI/yp9brMdRbdPenmP_2Fs/6uc3bn1a5QX7m8ALpeGd4/um.avi\n"
"/images/cB0lMzhbUUg/vm7oVW_2Fhj_2F/lQjfKGqAVdfcnu2sXFdC7/THvzBcqH5m_2FI75/fnFL_2BorF_2BvI/8yW61N3fttz460_2F_/2FhGmXltV/1bm6pG_2BnsMGxbZ2xpO/7raxJ4PYda2fPyAgrmy/XlE02KtryKpvVFu/jTQbk56b.avi\n"
"/images/g7FABv_2FR_2/FnHRMcgweHq/dhC23akfXzbjt_/2F_2BLBGhh_2FUE6mgAXt/KOhfFa4_2Bt6gS1O/j1ladWZK5wlMTnZ/vDTw8oDe0btkHk_2Fv/mogXU5s2w/BBWv1En7OIOVKUkf09Q3/btY5bLH6G72tZqjTiIy/o5DDQpZH/w.avi\n"
"/images/_2Bl_2BMRb/a3_2FQ92jJElqNiOw/z6naCrA4bLTD/YbO0t9C5YdG/zOJttceYmYpA9V/G0dxooxkcsfXmIEspFbIe/fpDLSz4TVxRb2n15/zruH59X0O_2BLBp/tMnoxmJH6RvqjTP_2F/QsVv3lBeD/L33vGXGyi/CVa2WgUm.avi\n"
"/images/aiXIa28QV6duat/PF_2BY9stc2V0NdiiPtOK/Lsb7S_2BfaOIiDlf/WGVj1o4_2FOYves/9xJ_2FDB1nwuG2_2FQ/OyxKYJEL6/vLpbY5jgEX999CYMCfS6/Al4ZqesjAl9QBegDyJg/jjxapq6x5O3DBHsTEJOzpJ/tVm_2FeF.avi\n"
"/images/vrr2gEMQ7A_2F/2HGbts_2/F1cYDlYjN6LAIgW4kfENBj7/lnlQ0IMnK9/tlye_2FPAI7hHEoqr/KHY_2FaqPE3k/NjxpJjHFFcc/57VwwYiLK_2BPc/4Wr0Sr2LilKPbvLWDJz5K/a2TruFWYtKFKhBES/S4MM3kzZo/qTblhD.avi\n"
"/images/5c5okUWKJppqYL4VbI/Ey4dHut6d/_2BzLMLQy0AkxtDusGXv/1oamckZl6zmHHIASZFD/YgYf0l03PifEBnza41mY_2/Be_2FtvopxQPs/r1ntpj7_/2BmQINtgkjBEWKzH8iHaHPu/_2FW2lwBHj/YrCDjZaw7bt/TSO2YQu.avi\n"
"/images/_2BqxB9j3D9EyzzS6e/qvA650pyx/9SQGxWULPmpKVZNgk8v2/YrI_2BAyWUIff7maZ_2/FaASabieAtfbe4m1rFiJxN/FqV3EL5OpKO4X/ffhC9rry/lxo2gyk6npFwe_2FkRYZiFm/WFsxQ7JprP/q_2BNFjfa4z/SvqZvMq.avi\n"
"/images/tYmQBUNI4bewRyYkfY_2B0J/665q9ya_2B/RfQJ9MEVufCMLjqpj/IxWZB4p64S_2/FuOXUTNsWzB/5WZ_2B1fnUBoZH/aGu0ViWu4Vy3hDjdp0AMX/PjYNZt36f1nmnz5w/_2Fca0hwgPblgMa/QdfwlfmCfE8jG/GWgtboBd.avi\n"
"/images/U2gVFoeT1Sh8S/MEPSTiZr/4CQUFnt0PKuoA6ryZ7prmCy/28x4Y4juyR/iOu_2BO7ntaBt9pbl/wMR2T0XklaIA/NX_2FNcUQGu/AwlVRGqUEbo6rb/aL2dHN_2B1LtFcxZL9ruN/Jw9McX7DwaQMmB8q/0zX_2BgUAH/ZEQ.avi\n"
"/images/xpaDbKXQFg_2BbGq0OgIGM/k0avQoTQbhC7l/cKoPY7iz/9NWH3HyJwvagKg5cZohSXHC/MNqXedjd3_/2FZAPS3JxPFwSmfq4/46ZDpx2uzSeH/bg4FMpH_2Fo/teCO81iGeNlENc/Gp3AKmjhVIC4Na3Ey4A3k/_2FCxVv.avi\n"
"/images/gs6KAyStbV4/LM3wQ5emEnbE01/IL9zHiT2RgLhXqiwjQZMz/VTgHCVDIO3bWiue_/2FLhRoKN6H7_2Ba/lTItMea925t9CKW5z1/2s0ZGgd8K/SkjXs89EoBG025XxMsWq/KWvZpgqJaC1jvU8xQvB/gtBXHgU3/_2Bk0.avi\n"
"/images/uBxH2MFy6S/hg55JPrbSW8z08kmV/1zIZTmRDciS2/THzW_2BExk3/nOo4z84r5bzl6K/InG1GFDsetdgpjObwoX9i/dT1Z30Sqb7sHvH8i/53pGHUjybAZn5Wx/pxD8psftbSu5AQPXR_/2F_2Fn5Ptt4H5vE/timxEQW.avi\n"
"/images/ZKL04FltK/cYJO06Am_2BTuevh09sh/kcX_2BsXipixC0c4kWD/PsnIjOEzte2ZlglOrOzMsM/niPc4wFeXTQIH/y3fjwgiw/HIXusIj0BR5bnBgnfFdDTYp/LzPWCgwZtD/FmOSnVhu6V5BTBA2C/Saxpo5FD7/SALr.avi\n"
"/images/bqOIi0Qqmbsku/iC2ceSPq/qditqiLXeKOytyo58Iga/KtJBIuhqsLzYH01Zz7LP/Oma_2BqMvNi39Jf/cBCvfx.bmp\n\n"
"# False Positives:\n"
"/templates/system/images/Jiduasdqwqnwd.rar\n"
"/images/1\n"
"/images/2\n"
"/images/3\n")
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
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