当存在换行符时,如何在多行上匹配 Golang 正则表达式?

Jav*_*per 3 regex go

package main

import (
    "fmt"
    "regexp"
)

func main() {
        r, _ := regexp.Compile(`OWASP_CSRFTOKEN:([a-zA-Z0-9\-]+)`)
        str := "OWASP_CSRFTOKEN:A-a-**\n**9-!OWASP_CSRFTOKEN:B-b-8-"
        fmt.Printf("%q\n", r.FindString(str))
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试匹配一个模式。注意变量\nstrOWASP_CSRFTOKEN:([a-zA-Z0-9\-]+)由于\n变量,我无法匹配该模式str

我期望匹配的字符串是OWASP_CSRFTOKEN:A-a-9-,但我得到了匹配,OWASP_CSRFTOKEN:A-a-因为9-是之后\n

Eug*_*sky 9

尝试多行模式:

package main

import (
    "fmt"
    "regexp"
)

func main() {
        r, _ := regexp.Compile("(?m)OWASP_CSRFTOKEN:([a-zA-Z0-9*-]+)")
        str := "OWASP_CSRFTOKEN:A-a-**\n**9-!OWASP_CSRFTOKEN:B-b-8-"
        fmt.Printf("%q\n", r.FindString(str))
}
Run Code Online (Sandbox Code Playgroud)

输出:

"OWASP_CSRFTOKEN:A-a-**"
Run Code Online (Sandbox Code Playgroud)
  • 或允许匹配任何字符 - 使用标志\n打开s
package main

import (
    "fmt"
    "regexp"
)

func main() {
        r, _ := regexp.Compile("(?s)OWASP_CSRFTOKEN:([a-zA-Z0-9*\n-]+)")
        str := "OWASP_CSRFTOKEN:A-a-**\n**9-!OWASP_CSRFTOKEN:B-b-8-"
        fmt.Printf("%q\n", r.FindString(str))
}
Run Code Online (Sandbox Code Playgroud)

输出:

"OWASP_CSRFTOKEN:A-a-**\n**9-"
Run Code Online (Sandbox Code Playgroud)

(我还添加了*允许的字符)