2 回答

TA貢獻1797條經驗 獲得超6個贊
默認情況下, ”?!?nbsp;不匹配換行符。如果你給“s”標志,它確實如此。我認為你不需要“m”。
請注意,如果<think>...</think>
您的字符串中有多個,則正則表達式將匹配 first<think>
和 last之間的所有內容</think>
。使用.*?
將導致它只匹配第一個的內容。

TA貢獻1865條經驗 獲得超7個贊
不要使用正則表達式來解析 XML,而是使用encoding/xml。在正則表達式中無法處理的極端情況示例:<think><elem attrib="I'm pondering about </think> tag now"></elem></think>
我將使用STARTandSTOP作為標記,只是為了與任何 XML 內容分離。完整的示例(包括 LF 和 CRLF 行結尾,以防萬一)與Go Playground的鏈接:
package main
import (
"fmt"
"regexp"
)
func main() {
r := regexp.MustCompile(`(?s)START(.*?)STOP`)
const s = "That is \nSTART\nFOOBAR\r\n\r\nSTOP\n"
fmt.Printf("%#v\n", r.FindStringSubmatch(s))
}
返回:
[]string{"START\nFOOBAR\r\n\r\nSTOP", "\nFOOBAR\r\n\r\n"}
- 2 回答
- 0 關注
- 347 瀏覽
添加回答
舉報