regex 为什么这个正则表达式不能匹配目标子字符串?[副本]

rwqw0loc  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(83)

此问题已在此处有答案

Regular expression works on regex101.com, but not on prod(1个答案)
3天前关闭。
我有两个网址,我想从他们匹配的具体部分。但结果matchList为nil。

func ParseVideoSubAppIdFileId(videoUrl string) (subAppId string, fileId string, err error) {
    pattern := `/^(https?)://(\d+)[\w\.]+.com/\w+/(\w+)/`
    reg, err := regexp.Compile(pattern)
    if err != nil {
        return  "", "", err
    }
    matchList := reg.FindStringSubmatch(videoUrl)
    if len(matchList) != 3 {
        return  "", "", nil
    }
    
    return matchList[1], matchList[2], err
}

func Test1(t *testing.T) {
    appId, fid, err := ParseVideoSubAppIdFileId("https://1251001049.vod2.myqcloud.com/3e9ac59evodtransgzp1251001049/21716792387702294712952810/adp.1434753.m3u8")
    fmt.Println(appId, fid, err)

    appId, fid, err = ParseVideoSubAppIdFileId("http://1251001049.vod2.myqcloud.com/8a7322f6vodgzp1251001049/64f65a71387702295105913734/iA9uSXqujDIA.mp4")
    fmt.Println(appId, fid, err)
}

我想从第一个网址匹配125100104921716792387702294712952810
并匹配第二个url中的125100104964f65a71387702295105913734。但是matchList是nil。

u1ehiz5o

u1ehiz5o1#

Golang正则表达式的语法与JavaScript有一点点不同。你正在用forward slash (/)封装正则表达式,这在golang中是不需要的。而是像这样使用:^(https?)://(\d+)[\w\.]+.com/\w+/(\w+)

相关问题