package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?s)(?(DEFINE)
(?P<realEnd>
(?(3)\>)
(?(4)\))
(?(5)\])
(?(6)\})
(?(7)\7)
)
)
#Ограничитель 1
((\<)|(\()|(\[)|(\{)|
((?=[[:ascii:]])[^\s\w\\\)\]\}\>]))
#Шаблон
(
(?:
\\. | # что-то экранированое ИЛИ
[\w\d\s]++ | # литералы, которые не могут быть ограничителем ИЛИ
(?!(?P>realEnd)). # что угодно кроме ограничителя
)*+
)
#Ограничитель 2
(?P>realEnd)
#Модификаторы шаблонов
#PHP [mixXsuUAJ] JavaScript [gmi] python [gmixsu]
((?:[mixXsuUAJ]*)|(?(?=.*?[mixXsuUAJ]+)[mixXsuUAJ]+))`)
var str = `test $ffsd\$ggg\\\\\\\\$iU`
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/