Регулярни изрази
14.11.2013
pattern matching
през 1962г.ed
, sed
, grep
, egrep
, awk
, and lex
...най-общо: работа с текстови низове
regexp
regexp.Regexp
Find(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)\b
regexp.Compile(`(?i)n`)
(but is slow in Java, Perl, PHP, Python, Ruby, ...)
Russ Cox
rsc@swtch.com
January 2007