Go語言正則模塊

基本使用

import "bytes" import "fmt" import "regexp" func main() { //這個測試一個字符串是否符合一個表達式。
    match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) //上面咱們是直接使用字符串,可是對於一些其餘的正則任務,你須要使用 Compile 一個優化的 Regexp 結構體。
    r, _ := regexp.Compile("p([a-z]+)ch") //這個結構體有不少方法。這裏是相似咱們前面看到的一個匹配測試。
    fmt.Println(r.MatchString("peach")) //這是查找匹配字符串的。
    fmt.Println(r.FindString("peach punch")) //這個也是查找第一次匹配的字符串的,可是返回的匹配開始和結束位置索引,而不是匹配的內容。
    fmt.Println(r.FindStringIndex("peach punch")) //Submatch 返回徹底匹配和局部匹配的字符串。例如,這裏會返回 p([a-z]+)ch 和 `([a-z]+) 的信息。
    fmt.Println(r.FindStringSubmatch("peach punch")) //相似的,這個會返回徹底匹配和局部匹配的索引位置。
    fmt.Println(r.FindStringSubmatchIndex("peach punch")) //帶 All 的這個函數返回全部的匹配項,而不單單是首次匹配項。例如查找匹配表達式的全部項。
    fmt.Println(r.FindAllString("peach punch pinch", -1)) // 後面的int都表明限制的匹配次數 //All 一樣能夠對應到上面的全部函數。
 fmt.Println(r.FindAllStringSubmatchIndex( "peach punch pinch", -1)) //這個函數提供一個正整數來限制匹配次數。
    fmt.Println(r.FindAllString("peach punch pinch", 2)) //上面的例子中,咱們使用了字符串做爲參數,並使用瞭如 MatchString 這樣的方法。咱們也能夠提供 []byte參數並將 String 從函數命中去掉。
    fmt.Println(r.Match([]byte("peach"))) //建立正則表示式常量時,可使用 Compile 的變體MustCompile 。由於 Compile 返回兩個值,不能用語常量。
    r = regexp.MustCompile("p([a-z]+)ch") fmt.Println(r) //regexp 包也能夠用來替換部分字符串爲其餘值。
    fmt.Println(r.ReplaceAllString("a peach", "<fruit>")) //Func 變量容許傳遞匹配內容到一個給定的函數中,
    in := []byte("a peach") out := r.ReplaceAllFunc(in, bytes.ToUpper) fmt.Println(string(out)) }

 

配合http模塊基本爬蟲應用

import ( "fmt"
    "net/http"
    "io/ioutil"
    "regexp" ) func main(){ url := "http://www.cnblogs.com/yxi-liu/p/8542863.html" resp, err := http.Get(url)  // 發送get請求
    if err != nil{    // 處理錯誤
 panic(err) } defer resp.Body.Close() // 關閉接口
 shtml,_ := ioutil.ReadAll(resp.Body)   //拿到body
 reg := regexp.MustCompile(`<h1 id="title2">(.*)</h1>`)   // 進行正則編譯 // 反引號用來建立原生的字符串字面量,這些字符串可能由多行組成(不支持任何轉義序列),因此一般用來寫正則字符串
 result := reg.FindAllStringSubmatch(string(shtml),-1) //匹配
    fmt.Println(result[0][1]) // 這裏返回一個二維數組,[0][0]爲匹配到的整個字符串 [0][1]爲捕獲匹配結果()內的內容
}
相關文章
相關標籤/搜索