import re
regex = re.compile(r"(^(\/\*)|([ \t'\"](\/\*)))(?!\/)(.|[\r\n]|\n)+?\*\/\n?\n?", flags=re.MULTILINE)
test_str = ("/* 'aa/' */\n\n"
"/*!test*/\n\n"
"/* someone said 'hello' */\n\n"
"/* \"hello\"*/\n\n"
"/***test****/\n\n"
"/******\n"
"'test'\n"
"****/\n\n"
"/****\n"
"test\n"
"****/\n\n"
"// let's try a single quote here \"test\"\n\n"
"/*\n"
"test\n"
"*/\n\n"
"/*'test'*/\n\n"
"/*\n"
" test\n"
"*/\n\n"
"/*\n"
" 'test ' */\n\n"
"/** @require 'aa/*' */\n\n"
".test\n"
" content ''/* test */\n\n"
".test content \"/* test */\"\n\n"
".test content /* test */\n\n"
"@require 'aaa/*'\n\n"
"@require 'bbb/*' /* test */\n\n"
"@require 'ccc/*'\n\n"
"@require 'ccc/* ab */' /* test */\n\n"
"@require 'ddd/*' /*test '*/\n"
"@require \"ddd/*\" /*test '*/\n\n"
"@require 'eee/*'\n"
"// test again\n\n"
"@require 'fff/*'\n\n"
"@require 'ggg/*'\n\n\n"
"@require 'hhh/*'\n\n\n"
"@require 'iii/*'\n\n"
"@require 'jjj/*' /* \n"
"test */\n\n"
"@require 'kk/**/*'")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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