2 回答

TA貢獻1805條經驗 獲得超9個贊
我很感興趣,只是為了好玩而玩弄它。也許是這樣的:https: //play.golang.org/p/GRVnHTwW0g
package main
import (
"fmt"
"regexp"
)
func main() {
// Want to match "test-20160101", "/20160101/" and "test-20160101"
re := regexp.MustCompile(`[-a-zA-Z/](20[012]\d[01]\d[0123]\d)([-a-zA-Z/]|\z)`)
urls := []string{
"test-20160101",
"/20160101/page.html",
"test20160101",
"nomatch",
"test19990101",
}
for _, url := range urls {
t := re.FindStringSubmatch(url)
if len(t) > 2 {
fmt.Println("match", url, "=", t[1])
}
}
}

TA貢獻1824條經驗 獲得超6個贊
?
在模式的末尾放一個。這意味著前面的項目是可選的。
如果要將模式錨定在字符串的末尾以匹配,請在最后(在 之后)放置一個$
(或)。\z
?
此外,您應該在 RE 周圍使用反引號而不是雙引號。這樣你就不必逃避反斜杠。
正如@Zan Lynx 提到的,只編譯一次RE。
- 2 回答
- 0 關注
- 300 瀏覽
添加回答
舉報