regexgoregex-alternation

Regex not matching in Go


I have a regex that is not matching in Go.

However in a regex playground it's matching fine: https://regex101.com/r/VNDXcQ/2.

It's matching JS comments.

Here is the code:

comment := "// fallback response. For more information contact support"
re := regexp.MustCompile(`/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm`)
matches := re.MatchString(comment)
fmt.Println(matches) // false

Why could that be?


Solution

  • There are two major issues:

    You can fix that with

    re := regexp.MustCompile(`(?m)/\*[\s\S]*?\*/|([^\\:]|^)//.*`)
    matches := re.FindAllString(comment, -1)
    

    Note / is not a special character and thus needs no escaping.

    See Go playground.