# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?m)^\h*#x?\h+\d+\N+[^#]+"
test_str = ("# SciTE settings for AutoIt v3\n"
"#\n"
"# Oct 25, 2015 - Jos\n"
"#\n"
"# *** Specify here your AutoIt Include directories ***\n"
"openpath.$(au3)=$(SciteDefaultHome)\\..\\include\n"
"openpath.beta.$(au3)=$(SciteDefaultHome)\\..\\beta\\include\n"
"# *** Specify here the name you want to use of the UDF header creator ***\n"
"UDFCreator=Your Name\n"
"#\n"
"au3=*.au3\n"
"filter.au3=AutoIt (au3)|$(au3)|\n"
"lexer.$(au3)=au3\n\n"
"# left for others but not in use anymore.\n"
"autoit3dir=$(SciteDefaultHome)\\..\n\n"
"#define the number of backup files you want to keep 0=none\n"
"backup.files=0\n\n"
"#define the activation of the ProperCase function using au3.api. 0=no change, 1=Propercase functions and keywords automatically\n"
"proper.case=0\n\n"
"## Debug Output Options (to permanent change your selection copy them to SciTEUser.Properties and change it there\n"
"# Debug MessageBox Option 2=\"All\" 1=\"No @extended\" 0=\"No @extended & @error\".\n"
"debug.msgbox.option=0\n"
"# Debug Console Option 3=\"All\" 2=\"No SystemTime\" 1=\"No SystemTime & Return\" 0=\"No SystemTime, Return & Error\".\n"
"debug.console.option=1\n"
"# Debug Trace Option 3=\"All\" 2=\"No SystemTime\" 1=\"No SystemTime & Return\" 0=\"No SystemTime, Return & Error\".\n"
"debug.trace.option=1\n"
"# extra propery used by AutoItAutoComplete.LUA to totally disable AutoComplete when set to 1\n"
"autocomplete.au3.disable=0\n"
"calltips.au3.disable=0\n\n"
"# AutoIt Pixmap information\n"
"import properties\\au3.pixmap\n"
"autoit.use.pixmaps=1\n"
"autoit.pixmap.function=$(autoit.pixmap.violet)\n"
"autoit.pixmap.variable=$(autoit.pixmap.gray)\n"
"autoit.pixmap.macro=$(autoit.pixmap.orange)\n"
"autoit.pixmap.keyword=$(autoit.pixmap.blue)\n"
"autoit.pixmap.library=$(autoit.pixmap.blue_library)\n"
"autoit.pixmap.preprocessor=$(autoit.pixmap.olive)\n"
"autoit.pixmap.special=$(autoit.pixmap.red_special)\n\n"
"# CreateTools()\n"
"autoit.CreateToolsStart=19\n"
"shortcuts.properties=$(SciteDefaultHome)\\shortcuts.properties\n\n"
"# Commands to compile / run your script\n"
"command.go.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /run /prod /ErrorStdOut /in \"$(FilePath)\" /UserParams $(1) $(2) $(3) $(4)\n"
"command.go.subsystem.$(au3)=1\n"
"command.compile.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /ShowGui /prod /in \"$(FilePath)\"\n"
"command.compile.filter.$(au3)=1\n"
"command.build.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /NoStatus /prod /in \"$(FilePath)\"\n"
"command.build.filter.$(au3)=1\n"
"# ----------------------------------------------------------------------------------------------------------------\n"
"# AutoitTools.lua will check if Beta is installed and use these te set the menu options\n"
"#x 00 Beta RUN\n"
"command.0.beta=Beta Run\n"
"command.0.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /run /beta /ErrorStdOut /in \"$(FilePath)\" /UserParams $(1) $(2) $(3) $(4)\n"
"command.name.0.$(au3)=Beta Run\n"
"command.save.before.0.$(au3)=1\n"
"command.shortcut.0.$(au3)=Alt+F5\n"
"#x 01 Beta AUT2EXE\n"
"command.1.beta=Beta Compile\n"
"command.1.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /NoStatus /beta /in \"$(FilePath)\"\n"
"command.name.1.$(au3)=Beta Compile\n"
"command.save.before.1.$(au3)=1\n"
"command.shortcut.1.$(au3)=Alt+F7\n"
"command.is.filter.1.$(au3)=1\n"
"#x 02 Beta Helpfile\n"
"command.2.beta=Beta Help\n"
"command.2.$(au3)=$(SciteDefaultHome)\\..\\beta\\Autoit3Help.exe \"$(CurrentWord)\"\n"
"command.name.2.$(au3)=Beta Help\n"
"command.subsystem.2.$(au3)=2\n"
"command.shortcut.2.$(au3)=Alt+F1\n"
"command.save.before.2.$(au3)=2\n\n"
"#x 03 Tylo's au3check program for Prod\n"
"command.3.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /Prod /AU3check /in \"$(FilePath)\"\n"
"command.name.3.$(au3)=SyntaxCheck Prod\n"
"command.shortcut.3.$(au3)=Ctrl+F5\n"
"command.save.before.3.$(au3)=1\n\n"
"#x 04 Tylo's au3check program for Beta\n"
"command.4.beta=SyntaxCheck Beta\n"
"command.4.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /beta /AU3check /in \"$(FilePath)\"\n"
"command.name.4.$(au3)=SyntaxCheck Beta\n"
"command.shortcut.4.$(au3)=Ctrl+Alt+F5\n"
"command.save.before.4.$(au3)=1\n"
"# ----------------------------------------------------------------------------------------------------------------\n"
"# 05 Open Explorer in Scriptdir\n"
"command.5.*=Explorer.exe /e,/select,\"$(FilePath)\"\n"
"command.name.5.*=Open Explorer in ScriptDir\n"
"command.shortcut.5.*=Ctrl+E\n"
"command.subsystem.5.*=2\n"
"command.save.before.5.*=2\n"
"command.replace.selection.5.*=0\n"
"command.quiet.5.*=1\n"
"# 06 AU3Info program\n"
"command.6.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /AU3info\n"
"command.name.6.$(au3)=AU3Info\n"
"command.shortcut.6.$(au3)=Ctrl+F6\n"
"command.subsystem.6.$(au3)=2\n"
"command.save.before.6.$(au3)=2\n"
"command.quiet.6.$(au3)=1\n"
"# 07 Test Run\n"
"command.7.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /test /run /prod /ErrorStdOut /in \"$(FilePath)\" /UserParams $(1) $(2) $(3) $(4)\n"
"command.name.7.$(au3)=Test Run\n"
"command.shortcut.7.$(au3)=Shift+F5\n"
"command.save.before.7.$(au3)=1\n"
"# 08 Test AUT2EXE\n"
"command.8.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /test /in \"$(FilePath)\"\n"
"command.name.8.$(au3)=Test Compile\n"
"command.shortcut.8.$(au3)=Shift+F7\n"
"command.save.before.8.$(au3)=1\n"
"# 09 Jos's Tidy formatting program for Autoit3\n"
"command.9.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /Tidy /in \"$(FilePath)\"\n"
"command.name.9.$(au3)=Tidy AutoIt Source\n"
"command.subsystem.9.$(au3)=0\n"
"command.save.before.9.$(au3)=1\n"
"command.shortcut.9.$(au3)=Ctrl+T\n"
"#~ command.is.filter.9.$(au3)=1\n"
"# 10 Giuseppe's CodeWizard program\n"
"command.10.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\CodeWizard\\CodeWizard.au3\" \"/StdOut\"\n"
"command.subsystem.10.$(au3)=1\n"
"command.name.10.$(au3)=CodeWizard\n"
"command.shortcut.10.$(au3)=Alt+W\n"
"command.save.before.10.$(au3)=2\n"
"command.replace.selection.10.$(au3)=1\n"
"command.quiet.10.$(au3)=1\n"
"# 12 lookfar's Koda FormDesigner\n"
"command.12.$(au3)=\"$(SciteDefaultHome)\\Koda\\FD.exe\" /Scite\n"
"command.subsystem.12.$(au3)=1\n"
"command.name.12.$(au3)=Koda(FormDesigner)\n"
"command.shortcut.12.$(au3)=Alt+m\n"
"command.save.before.12.$(au3)=2\n"
"command.replace.selection.12.$(au3)=1\n"
"command.quiet.12.$(au3)=1\n"
"# 14 Jos's SciTeConfig\n"
"command.14.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\SciteConfig\\SciteConfig.au3\"\n"
"command.name.14.$(au3)=SciTe Config\n"
"command.shortcut.14.$(au3)=Ctrl+1\n"
"command.subsystem.14.$(au3)=2\n"
"command.save.before.14.$(au3)=2\n"
"command.replace.selection.14.$(au3)=0\n"
"command.quiet.14.$(au3)=1\n"
"# 15 Update Source in Version repository\n"
"command.15.*=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /in \"$(FilePath)\" /Versioning_Commit\n"
"command.name.15.*=Version Update Source\n"
"command.save.before.15.*=1\n"
"command.shortcut.15.*=F12\n"
"# 16 Compare current Source with the source in the Version repository\n"
"command.16.*=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\AutoIt3Wrapper\\AutoIt3Wrapper.au3\" /in \"$(FilePath)\" /Versioning_ShowDiff\n"
"command.name.16.*=Version Diff Source\n"
"command.save.before.16.*=1\n"
"command.shortcut.16.*=Alt+F12\n"
"command.quiet.16.*=1\n"
"# 17 guinness SciTE Jump\n"
"command.17.$(au3)=\"$(SciteDefaultHome)\\..\\AutoIt3.exe\" \"$(SciteDefaultHome)\\\\SciTE Jump\\SciTE Jump.au3\"\n"
"command.name.17.$(au3)=SciTE Jump\n"
"command.shortcut.17.$(au3)=Alt+Q\n"
"command.subsystem.17.$(au3)=2\n"
"command.save.before.17.$(au3)=2\n"
"command.replace.selection.17.$(au3)=0\n"
"command.quiet.17.$(au3)=1\n\n"
"# Standard LUA Functions\n"
"# 18 Jump to Func quickly\n"
"command.name.18.$(au3)=Jump to Function Prod\n"
"command.mode.18.$(au3)=subsystem:lua,savebefore:yes\n"
"command.shortcut.18.$(au3)=Ctrl+J\n"
"command.18.$(au3)=InvokeTool AutoItGotoDefinition.GotoDefinition\n"
"# 19 Jump Beta function quickly\n"
"command.19.beta=Jump to Function Beta\n"
"command.name.19.$(au3)=Jump to Function Beta\n"
"command.mode.19.$(au3)=subsystem:lua,savebefore:yes\n"
"command.shortcut.19.$(au3)=Ctrl+Alt+J\n"
"command.19.$(au3)=InvokeTool AutoItGotoDefinition.GotoDefinition beta\n"
"# 20 Jump Back to original spot\n"
"command.name.20.$(au3)=Jump Back\n"
"command.mode.20.$(au3)=subsystem:lua,savebefore:yes\n"
"command.shortcut.20.$(au3)=Ctrl+Shift+J\n"
"command.20.$(au3)=InvokeTool AutoItGotoDefinition.JumpBack\n"
"# 21 List functions\n"
"command.name.21.$(au3)=List Functions\n"
"command.21.$(au3)=InvokeTool AutoItTools.FunctionsList\n"
"command.subsystem.21.$(au3)=3\n"
"command.mode.21.$(au3)=savebefore:no\n"
"command.shortcut.21.$(au3)=Alt+L\n"
"# 22 Replacement toggle LUA script for MONOSPACE font\n"
"command.name.22.$(au3)=Toggle Override Font\n"
"command.mode.22.$(au3)=subsystem:lua,savebefore:no\n"
"command.shortcut.22.$(au3)=Ctrl+F11\n"
"command.22.$(au3)=InvokeTool Tools.toggleOverrideFont\n"
"# 23 Available\n"
"command.name.23.$(au3)=\n"
"command.subsystem.23.$(au3)=\n"
"command.23.$(au3)=\n"
"command.shortcut.23.$(au3)=\n"
"command.save.before.23.$(au3)=2\n"
"# 24 Add a msgbox for debugging\n"
"command.name.24.$(au3)=Debug to MsgBox\n"
"command.subsystem.24.$(au3)=3\n"
"command.24.$(au3)=InvokeTool AutoItTools.DebugMsgBoxAdd\n"
"command.shortcut.24.$(au3)=Ctrl+Shift+D\n"
"command.save.before.24.$(au3)=2\n"
"# 25 Add a Console msg for debugging\n"
"command.name.25.$(au3)=Debug to Console\n"
"command.subsystem.25.$(au3)=3\n"
"command.25.$(au3)=InvokeTool AutoItTools.DebugConsoleWriteAdd\n"
"command.shortcut.25.$(au3)=Alt+D\n"
"command.save.before.25.$(au3)=2\n"
"# 26 Remove Console and MSGBOX debug lines\n"
"command.name.26.$(au3)=Debug Remove lines\n"
"command.subsystem.26.$(au3)=3\n"
"command.26.$(au3)=InvokeTool AutoItTools.DebugRemove\n"
"command.shortcut.26.$(au3)=Ctrl+Alt+Z\n"
"command.save.before.26.$(au3)=2\n"
"# 27 Add ConsoleWrite Trace lines\n"
"command.name.27.$(au3)=Trace: Add Trace Lines\n"
"command.subsystem.27.$(au3)=3\n"
"command.27.$(au3)=InvokeTool AutoItTools.TraceAdd\n"
"command.shortcut.27.$(au3)=\n"
"command.save.before.27.$(au3)=2\n"
"# 28 Add ConsoleWrite Function Trace lines\n"
"command.name.28.$(au3)=Trace: Add Func Trace Lines\n"
"command.subsystem.28.$(au3)=3\n"
"command.28.$(au3)=InvokeTool AutoItTools.FunctionTraceAdd\n"
"command.shortcut.28.$(au3)=\n"
"command.save.before.28.$(au3)=2\n"
"# 29 Remove Trace Console lines\n"
"command.name.29.$(au3)=Trace: Remove ALL Trace lines\n"
"command.subsystem.29.$(au3)=3\n"
"command.29.$(au3)=InvokeTool AutoItTools.AllTraceRemove\n"
"command.shortcut.29.$(au3)=\n"
"command.save.before.29.$(au3)=2\n"
"# 30 Comment Console and MSGBOX debug lines\n"
"command.name.30.$(au3)=DebugTrace: Comment ALL lines\n"
"command.subsystem.30.$(au3)=3\n"
"command.30.$(au3)=InvokeTool AutoItTools.AllComment\n"
"command.shortcut.30.$(au3)=Alt+Shift+D\n"
"command.save.before.30.$(au3)=2\n"
"# 31 UnComment Console and MSGBOX debug lines\n"
"command.name.31.$(au3)=DebugTrace: UnComment ALL lines\n"
"command.subsystem.31.$(au3)=3\n"
"command.31.$(au3)=InvokeTool AutoItTools.AllUncomment\n"
"command.shortcut.31.$(au3)=Alt+Ctrl+D\n"
"command.save.before.31.$(au3)=2\n"
"# 32 Open #include File\n"
"command.name.32.$(au3)=Open Include\n"
"command.mode.32.$(au3)=subsystem:lua,savebefore:no\n"
"command.shortcut.32.$(au3)=Alt+I\n"
"command.32.$(au3)=InvokeTool AutoItTools.OpenInclude\n"
"# 33 Open BETA #include File\n"
"command.33.beta=Open Include Beta\n"
"command.name.33.$(au3)=Open Include Beta\n"
"command.mode.33.$(au3)=subsystem:lua,savebefore:no\n"
"command.shortcut.33.$(au3)=Alt+Shift+I\n"
"command.33.$(au3)=InvokeTool AutoItTools.OpenBetaInclude\n"
"# 34 Generate UDF header\n"
"command.name.34.$(au3)=Make UDF Header\n"
"command.mode.34.$(au3)=subsystem:lua,savebefore:no\n"
"command.shortcut.34.$(au3)=Ctrl+Alt+H\n"
"command.34.$(au3)=InvokeTool AutoItTools.InsertFunctionHeader\n"
"# Commands to for Help F1\n"
"command.help.$(au3)=$(SciteDefaultHome)\\..\\Autoit3Help.exe \"$(CurrentWord)\"\n"
"command.help.subsystem.$(au3)=2\n"
"# Autocomplete and call tip settings\n"
"api.$(au3)=$(SciteDefaultHome)\\api\\au3.api;$(SciteDefaultHome)\\api\\au3.autoit3wrapper.api;$(SciteUserHome)\\au3.user.calltips.api\n"
"calltip.au3.word.characters=$(chars.alpha)$(chars.numeric)_.\n"
"calltip.au3.ignorecase=1\n"
"calltip.au3.end.definition=)\n"
"calltip.au3.parameters.separators=,\n"
"# set the style for separator character # Only available in SciTE4AutoIt3 version\n"
"calltip.au3.delimiter.style=8\n"
"# Display the calltip above the function # Only available in SciTE4AutoIt3 version\n"
"calltips.set.above=0\n"
"# Set the highlight color of the function argument # Only available in SciTE4AutoIt3 version\n"
"calltips.color.highlight=#FF0000\n"
"# Set the fore and back color of the calltip window\n"
"style.au3.38=fore:#050505,back:#FFFFFF\n\n"
"#\n"
"autocomplete.au3.ignorecase=1\n"
"autocomplete.au3.start.characters=$(chars.alpha)$(chars.numeric)$_@#\n"
"word.characters.$(au3)=$(chars.alpha)$(chars.numeric)$(chars.accented).$_@#\n"
"# Auto indent stuff\n"
"#~ indent.size.$(au3)=4\n"
"statement.indent.$(au3)=\n"
"statement.end.$(au3)=\n"
"statement.lookback.$(au3)=\n"
"block.start.$(au3)=5 case if do for func else elseif while select switch with\\\n"
" Case If Do For Func Else ElseIf While Select Switch With\\\n"
" CASE IF DO FOR FUNC ELSE ELSEIF WHILE SELECT SWITCH WITH\n"
"block.end.$(au3)=5 case else endif elseif endfunc endselect endswitch next until wend endwith\\\n"
" Case Else EndIf ElseIf EndFunc EndSelect EndSwitch Next Until Wend WEnd EndWith\\\n"
" CASE ELSE ENDIF ELSEIF ENDFUNC ENDSELECT ENDSWITCH NEXT UNTIL WEND ENDWITH\n"
"#Comments functions definition\n"
"comment.block.au3=;~\n"
"comment.block.at.line.start.au3=1\n"
"comment.stream.start.au3=#CS\n"
"comment.stream.end.au3=#CE\n"
"comment.box.start.au3=#CS\n"
"comment.box.middle.au3=;\n"
"comment.box.end.au3= #CE\n\n"
"# Import the seperate au3.keywords.properties file containing AutoIt3 info (based on script by Valik)\n"
"import properties\\au3.keywords\n"
"import properties\\autoit3wrapper.keywords\n"
"# Import the seperate au3.keywords.Abbreviations.properties file containing Abbreviation keywords supplied by Mhz\n"
"import properties\\au3.keywords.abbreviations\n"
"#\n"
"# Add the below lines to your SciTEUser.properties when you want to add User Abbreviations and UDFS\n"
"#import au3.keywords.user.abbreviations\n"
"#import au3.UserUdfs\n\n"
"# Autoit keywords\n"
"keywords.$(au3)=$(au3.keywords.keywords)\n"
"# Autoit functions\n"
"keywords2.$(au3)=$(au3.keywords.functions)\n"
"# Autoit macros\n"
"keywords3.$(au3)=$(au3.keywords.macros)\n"
"# Autoit Send Keys\n"
"keywords4.$(au3)=$(au3.keywords.sendkeys)\n"
"#Pre-Processor\n"
"keywords5.$(au3)=$(au3.keywords.preprocessor)\n"
"#Special\n"
"keywords6.$(au3)=$(au3.keywords.special) $(autoit3wrapper.keywords.special)\n"
"# Expand abbreviations\n"
"keywords7.$(au3)=$(au3.keywords.abbrev) $(au3.keywords.userabbrev)\n"
"# UDFS\n"
"keywords8.$(au3)=$(au3.keywords.udfs)\n"
"# UDFS User\n"
"keywords9.$(au3)=$(au3.keywords.user.udfs)\n\n"
"#Color Settings\n"
"#Background\n"
"style.au3.32=style.*.32=$(font.base),back:#F0F4F9\n"
"#CaretLineBackground\n"
"caret.line.back=#FFFED8\n"
"# Brace highlight\n"
"style.au3.34=fore:#0000FF,back:#F0F4F9\n"
"# Brace incomplete highlight\n"
"style.au3.35=fore:#009933,back:#F0F4F9\n"
"# White space\n"
"style.au3.0=fore:#000000\n"
"# Comment line\n"
"style.au3.1=fore:#008000,italics\n"
"# Comment block\n"
"style.au3.2=fore:#008000,italics\n"
"# Number\n"
"style.au3.3=fore:#0000FF\n"
"# Function\n"
"style.au3.4=fore:#000090\n"
"# Keyword\n"
"style.au3.5=fore:#0000FF\n"
"# Macro\n"
"style.au3.6=fore:#808000\n"
"# String\n"
"style.au3.7=fore:#FF0000\n"
"# Operator\n"
"style.au3.8=fore:#FF8000\n"
"# Variable\n"
"style.au3.9=fore:#5A5A5A\n"
"# Send keys in string\n"
"style.au3.10=fore:#808080\n"
"# Pre-Processor\n"
"style.au3.11=fore:#808000\n"
"# Special\n"
"style.au3.12=fore:#DC143C\n"
"#Abbrev-Expand\n"
"style.au3.13=fore:#FF0000\n"
"# COM Objects\n"
"style.au3.14=fore:#993399\n"
"#Standard UDF's\n"
"style.au3.15=fore:#0080FF\n"
"#User UDF's\n"
"style.au3.16=$(style.au3.15)")
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