Регулярни изрази
14.11.2013
pattern matching през 1962г.ed, sed, grep, egrep, awk, and lex...най-общо: работа с текстови низове
regexpregexp.RegexpFind(All)?(String)?(Submatch)?(Index)?godoc regexp/syntax
Всеки символ, освен някои специални, означава себе си.
Цялата магия е в специалните символи:
. \| ( ) [ ] { } + \ ^ $ * ?
Някои символи са специални само в определен контекст (например символът -)
\ пред специален символ го прави неспециален такъв.
Compile() или MustCompile()re, err := regexp.Compile(`Hello`) re := regexp.MustCompile(`Hello`)
Второто изпада в паника, ако регулярният израз не е валиден
re, err := regexp.Compile(`Hello`)
if err != nil {
fmt.Printf("There is a problem with your regexp.\n")
return
}
if re.MatchString("Hello Regular Expression.") == true {
fmt.Printf("Match ")
} else {
fmt.Printf("No match ")
}re := regexp.MustCompile(`day|nice`)
re.MatchString("A nice dance-day")re := regexp.MustCompile(`H\wllo`)
fmt.Printf("%v", re.MatchString("Hello Regular Expression."))re := regexp.MustCompile(`\p{Cyrillic}`)
fmt.Printf("%v", re.FindString("Bаba"))Символите ( и ) се използват за логическо групиране на части от шаблона с цел:
\bda(y|nce)\bregexp.Compile(`(?i)n`)
(but is slow in Java, Perl, PHP, Python, Ruby, ...)
Russ Cox
rsc@swtch.com
January 2007