package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?i)((?<=[ )()']where)|(?<=[ )()']and)|(?<=[ )()']o[rn])|(?<=[ )()']if)|(?<=[ )()']when)|(?<=having))+(\s|\()+[)(,'+_¥£$#\@\w\[\]\.\s]+like\s*\(?\s*(('((\w|%|'{2})*)')\s*\+)*\s*@p\d+\s*(\+('%'))*\)`)
var str = `select * from a where #myTable$@_¥£.$@_¥£#columnName like ('%'+@p2+'%')
select * from a where #myTable$_¥£.$_¥£#columnName like ('%'+@p2+'%')
(\w|\[|\]|\.|\s|'|\+|\(|\)|\,)
select a from b where h like ('%'+@p2+'%')
having b.d like ('%'+@p2)
)join c on a.b like (@p2+'%')
and a.b like (@p2)
if a like ('%abc24''as'+@p2+'%')
case when a like ('%'+@p2+'%')
where (((a like ('%'+ @p2+'%'))))
where a + 'b' like ('%'+@p2+'%')
where concat(a,b) like ('%'+@p2+'%') or ltrim(a) like ('%'+@p2+'%')
select * from a where concat(a,b) like 'a' and c like d or ltrim(a) like ('%'+@p2+'%')
where isnull(ltrim(a), '0') like ('%'+@p2+'%')
where a + 'b' LIKe ('%'+@p2+'%')
vICM_EVENTlike roadshowev0like_ where upper(roadshowev0like_.EVENT_NAME) like ('%'+@p1+'%') or upper(roadshowev0like_.EVENT_SYMBOLlike) like ('%'+@p2+'%') and e_.EVENT_SYMBOLike like('%'+@p2+'%')
from vICM_INVESTOR investor0_ where (upper(investor0_.OrgId) like ('%'+@p1+'%') or upper(investor0_.Name) like ('%'+@p2+'%')) and investor0_.IsDeactivated=@p3 order by investor0_.Name asc
where ((h.g) + upper(concat(investor0_.OrgId, 'd') + (a.d)) like ('%'+@p1+'%')
or upper(investor0_.Name) like ('%'+@p2+'%')) and investor0_.IsDeactivated=@p3 order by investor0_.Name asc
where (a.b like ('%'+@p2+'%')) and d.g like ('%'+@p2+'%')
(where a.b like ('%'+@p2)
if a like ('%'+@p2)
join a on b.d like ('%'+@p2)
// not supported
where a like 'b' and c like ('%'+@p2+'%')
where a like (' '+@p1+'%')
// supported
where a like ('%'+@p1+'%') and c like ('%'+@p2+'%')
`
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/