package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?i)<table\b[^\>]*\bname=(\"|')?table01\1[^\>]*>(?>([^\<]+|<(?!\/?table\b))|(<table[^\>]*>(?:(?2)|(?3)|)+?<\/table>))*<\/table>`)
var str = `<table name="table01" data-measure-unit="Y">
<table></table>
</table>
<table name="table01" data-measure-unit="Y">
<div>
<table></table>
</div>
</table>
<table name="table01" data-measure-unit="Y">
<div>
<table>
<table>
</table>
</table>
</div>
</table>
<table name="table01" data-measure-unit="Y">
<div>
<div></div>
</div>
</table>
<table name="table01" data-measure-unit="Y">
</table>
<table name="table01"></table>`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
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/