package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?:^ *(?:/\*\*[^/\n]*\r?\n(?:[^/\n]*\r?\n)*[^/\n]*\*/ *|//.*)\r?\n)+(?: *[\r?\n])*#ifdef BUILD_FLAG\r?\n[\s\S]*?^#endif\r?\n`)
var str = ` Code here
and here
//this is s comment block
/**
*and a nested comment block
*/
//-----------------------------------------------------------------------------
// this comment block should not be captured
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// this whole comment block and the conditional block below should be captured
//-----------------------------------------------------------------------------
/**
* @brief Some comment
*
xxxxx
* @return
*/
//-----------------------------------------------------------------------------
#ifdef BUILD_FLAG
...
#endif
More code
More code
//---------------------------------------------------------
// this whole comment block and the conditional block below should be captured
// --------------------------------------------------------
#ifdef BUILD_FLAG
...
#endif
More code
//-------------------------------------------------------------------------
/**
* @name this whole block comment should be captured.
* @{
*/
#ifdef BUILD_FLAG
...
#endif
`
var substitution = ""
fmt.Println(re.ReplaceAllString(str, 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 Golang, please visit: https://golang.org/pkg/regexp/