在正則表達式中,我無法解決(在golang中)如何匹配字符,分隔符或字符串尾部。下面幾乎做什麼,我想:如何匹配golang正則表達式中的字符或字符串結尾?
url := "test20160101"
if i, _ := regexp.MatchString("[-a-zA-Z/]20[012]\\d[01]\\d[0123]\\d[-a-zA-Z/]", url); i == true {
t := regexp.MustCompile("[-a-zA-Z/](20[012]\\d[01]\\d[0123]\\d)[-a-zA-Z/]").FindStringSubmatch(url)[1]
fmt.Println("match: ", t)
}
https://play.golang.org/p/eWZ_DiOVBl
但我想也符合以下:
url := "test-20160101-"
url := "/20160101/page.html"
我注意到有在the golang documentation一個\ž但這並不工作,至少當我把它放在裏面[-a-zA-Z/]
即[-a-zA-Z\\z/]
只是關於正則表達式編譯的一個注意事項,以防您習慣於像在問題中那樣編寫它。正則表達式編譯*是昂貴的*。做一次並存儲結果。最近看到了一些代碼在循環中執行了MustCompile。這是一個非常緩慢的錯誤。 –
是的,你不應該把'\ z'放在字符類中。它會匹配那裏的文字「z」。 – Bergi
@ZanLynx好的指針。它只是我的測試代碼,但我們不希望人們效仿它。 – Jacob