为什么以下多行正则表达式不起作用,我希望匹配标签内的子字符串。其他简单的多行匹配工作正常。
func main() {
r := regexp.MustCompile(`(?m)<think>(.*)</think>`)
const s = `That is
<think>
FOOBAR
</think>`
fmt.Printf("%#v\n", r.FindStringSubmatch(s))
}
https://play.golang.org/p/8C6u_0ca8w
最佳答案
默认情况下, ”。”不匹配换行符。如果你给“s”标志,它会。我认为你不需要“m”。
请注意,如果您的字符串中有多个 <think>...</think>
,则正则表达式将匹配第一个 <think>
和最后一个 </think>
之间的所有内容。使用 .*?
将导致它只匹配第一个的内容。
关于regex - Golang 多行正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37106834/