猿问

Go中的正则表达式不匹配

我有一个在 Go 中不匹配的正则表达式。


但是在正则表达式游乐场中,它匹配得很好:https ://regex101.com/r/VNDXcQ/2 。


它匹配 JS 注释。


这是代码:


comment := "// fallback response. For more information contact support"

re := regexp.MustCompile(`/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm`)

matches := re.MatchString(comment)

fmt.Println(matches) // false

为什么会这样?


慕无忌1623718
浏览 242回答 1
1回答

Helenr

有两个主要问题:您正在使用正则表达式文字作为字符串正则表达式模式。这意味着,您需要通过将其转换为内联修饰符来删除模式的第一个和最后一个/以及“移动”标志m(?m)您只匹配第一个匹配项MatchString(因为标志不能与正则表达式模式一起传递并且g标志“不支持”)。您需要使用FindAllString来获取所有匹配项。你可以用re := regexp.MustCompile(`(?m)/\*[\s\S]*?\*/|([^\\:]|^)//.*`)matches := re.FindAllString(comment, -1)注意/不是特殊字符,因此不需要转义。
随时随地看视频慕课网APP

相关分类

Go
我要回答