# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:^ *(?:/\*\*[^/\n]*\r?\n(?:[^/\n]*\r?\n)*[^/\n]*\*/ *|//.*)\r?\n)+(?: *[\r?\n])*#ifdef BUILD_FLAG\r?\n[\s\S]*?^#endif\r?\n"
test_str = (" Code here\n"
" and here\n\n"
"//this is s comment block\n"
"/**\n"
"*and a nested comment block\n"
"*/\n\n"
"//-----------------------------------------------------------------------------\n"
"// this comment block should not be captured\n"
"//-----------------------------------------------------------------------------\n\n"
"//-----------------------------------------------------------------------------\n"
"// this whole comment block and the conditional block below should be captured\n"
"//-----------------------------------------------------------------------------\n"
"/**\n"
" * @brief Some comment \n"
" * \n"
" xxxxx\n"
" * @return \n"
" */\n"
"//-----------------------------------------------------------------------------\n"
"#ifdef BUILD_FLAG\n"
"...\n"
"#endif\n\n"
" More code\n"
"More code\n\n"
"//---------------------------------------------------------\n"
"// this whole comment block and the conditional block below should be captured\n"
"// --------------------------------------------------------\n"
"#ifdef BUILD_FLAG\n"
"...\n"
"#endif\n\n"
"More code\n\n"
" //-------------------------------------------------------------------------\n"
" /**\n"
" * @name this whole block comment should be captured.\n"
" * @{\n"
" */\n\n"
"#ifdef BUILD_FLAG\n"
"...\n"
"#endif\n")
subst = ""
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)
# 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