Regex 当有新行字符时,如何在多行上匹配Golang正则表达式?
我正在尝试匹配一种模式。注意Regex 当有新行字符时,如何在多行上匹配Golang正则表达式?,regex,go,Regex,Go,我正在尝试匹配一种模式。注意\n变量中的str。 由于str变量中的\n,我无法匹配模式OWASP\u CSRFTOKEN:([a-zA-Z0-9\-]+) 我希望匹配的字符串是OWASP\u CSRFTOKEN:A-A-9-,但我得到了OWASP\u CSRFTOKEN:A-A-的匹配,因为9-在\n之后,请尝试多行模式: -打开我的m标志 输出: package main import ( "fmt" "regexp" ) fu
\n
变量中的str
。
由于str
变量中的\n
,我无法匹配模式OWASP\u CSRFTOKEN:([a-zA-Z0-9\-]+)
我希望匹配的字符串是OWASP\u CSRFTOKEN:A-A-9-
,但我得到了OWASP\u CSRFTOKEN:A-A-
的匹配,因为9-
在\n
之后,请尝试多行模式:
- -打开我的
标志m
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))
}
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))
}
- 或允许
与任何字符匹配-使用\n
标志启用s
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))
}
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))
}
(我还将
*
添加为允许的字符)将\n
添加到字符类中,OWASP\U CSRFTOKEN:([a-zA-Z0-9\n-]+)
。或者,在运行正则表达式之前删除所有\n
(如果需要不带换行符的值,请参阅),这可能会更简单。
"OWASP_CSRFTOKEN:A-a-**\n**9-"