regex - 当有换行符时,如何在多行上匹配 Golang 正则表达式?
问题描述
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))
}
我正在尝试匹配模式。注意变量\n
。由于变量,str
我无法匹配模式。OWASP_CSRFTOKEN:([a-zA-Z0-9\-]+)
\n
str
我希望匹配的字符串是OWASP_CSRFTOKEN:A-a-9-
,但我得到了一个匹配,OWASP_CSRFTOKEN:A-a-
因为9-
is after\n
解决方案
尝试多线模式:
- https://golang.org/pkg/regexp/syntax/ - 打开我的
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))
}
输出:
"OWASP_CSRFTOKEN:A-a-**"
- 或允许匹配任何字符 - 使用标志
\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))
}
输出:
"OWASP_CSRFTOKEN:A-a-**\n**9-"
(我也添加*
了允许的字符)
推荐阅读
- java - 有没有办法在Java列表中提取列表的类型参数?
- r - 如何调试 msm.check.state(nrow(qmatrix), state, cens$censor) 中的错误:状态向量包含不在 1、2、...、10 中的元素
- android - 如何在 Recyclerview 中对实时 Firestore 数据进行分组/分段
- reactjs - 更改成帧器运动动画中的 z 索引
- html - 带有 Angular 的 Kendo Grid 中的多选滚动问题
- lua - Lua 帮我优化我的模式匹配功能
- python - Python Selenium driver.get 打开空白网址
- react-native - iOS 推送通知权限未按预期触发
- c++ - QT Q3Dsurface 显示面板
- python - beautifulsoup:无法从带有 cookie 的股息投资者那里获得正确的信息