亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 golang 正則表達式中匹配字符或字符串結尾?

如何在 golang 正則表達式中匹配字符或字符串結尾?

Go
夢里花落0921 2022-03-03 15:05:03
我無法在正則表達式中(在 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"我注意到golang 文檔中有一個 \z但這不起作用,至少當我把它放在里面[-a-zA-Z/]時[-a-zA-Z\\z/]
查看完整描述

2 回答

?
Cats萌萌

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])

        }

    }

}


查看完整回答
反對 回復 2022-03-03
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

?在模式的末尾放一個。這意味著前面的項目是可選的。

如果要將模式錨定在字符串的末尾以匹配,請在最后(在 之后)放置一個$(或)。\z?

此外,您應該在 RE 周圍使用反引號而不是雙引號。這樣你就不必逃避反斜杠。

正如@Zan Lynx 提到的,只編譯一次RE。


查看完整回答
反對 回復 2022-03-03
  • 2 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號