为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的正则表达式不匹配

Go中的正则表达式不匹配

Go
慕无忌1623718 2022-06-27 10:37:44
我有一个在 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为什么会这样?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

有两个主要问题:

  • 您正在使用正则表达式文字作为字符串正则表达式模式。这意味着,您需要通过将其转换为内联修饰符来删除模式的第一个和最后一个/以及“移动”标志m(?m)

  • 您只匹配第一个匹配项MatchString(因为标志不能与正则表达式模式一起传递并且g标志“不支持”)。您需要使用FindAllString来获取所有匹配项。

你可以用

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

matches := re.FindAllString(comment, -1)

注意/不是特殊字符,因此不需要转义。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信