我們前兩節課爬取珍愛網的時候,用到了很多正規表示式去匹配城市列表、城市、使用者資訊,其實除了正規表示式去匹配,還可以利用goquery和xpath第三方庫匹配有用資訊。而我利用了更優雅的正規表示式匹配。下來大概介紹下正規表示式。
比如我們匹配城市列表的時候,會取匹配所有城市的url,如下:
]*>([^
[0-9a-z]+表示匹配小寫字母或者數字至少一次,[>]*表示匹配非》的字元任意次,然後[
通過以下方式就可以拿到url和city
const (
citylistreg = `]*>([^`
compile := regexp.mustcompile(citylistreg)
submatch := compile.findallsubmatch(contents, -1)
for _, m := range submatch ]+`)
fmt.println(reg.findallstring(testtext, -1)) // ----->[你好]
reg = regexp.mustcompile(`[\p]+`)
fmt.println(reg.findallstring(testtext, -1)) // ----->["hello " ", i li golang!"]
fmt.printf("%q\n", reg.findallstring(testtext, -1)) // ----->["hello " ", i lm golang!"]
reg = regexp.mustcompile(`\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`)
fmt.println(reg.matchstring("[email protected]"))
//使用者名稱密碼:
reg = regexp.mustcompile(`[a-za-z]|\w`)
fmt.println(reg.matchstring("w_dy_246"))
執行結果如下:
p([a-z]+)ch
a a smallsoup
[你好嗎]
[hello , i like golang!]
["hello " ", i like golang!"]
true
true
process finished with exit code 0
go 正則匹配郵箱
w 匹配字母數字及下劃線 var reemail 1 9 d qq.com 郵箱 reemail w w com 郵箱 reemail w w a z a z 郵箱 w 表示字母字元或者.其中乙個出現 1到多次 a z 表示a z任意其中乙個字元 出現2到3次 a z 表示分組 a到z中任意乙個出現...
go中的string操作
strings 判斷字串s是否以prefix開頭 strings.hasprefix s string,preffix string bool 判斷字串s是否以suffix結尾 stirngs.hassuffix s string,suffix string bool 判斷str在s中首次出現的位置...
GO語言 String 方法的思考
對於定於了string 方法的型別,預設輸出的時候會呼叫該方法,實現字串的列印。例如下面 package main import fmt type man struct func m man string string func main 輸出 my name is sns然而,如果使用func m...