2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用字符串文字(帶反引號(hào))來(lái)包含單引號(hào)和捕獲組:
re := regexp.MustCompile(`(?s)bus'.\s+(.*?nuts)`)
看這個(gè)例子:
var source_txt = `bus driver drove steady although the bus's steering was going nuts.`
func main() {
fmt.Printf("Experiment with regular expressions.\n")
fmt.Printf("source text:\n")
fmt.Println("--------------------------------")
fmt.Printf("%s\n", source_txt)
fmt.Println("--------------------------------")
// a regular expression
regex := regexp.MustCompile(`(?s)bus'.\s+(.*?nuts)`)
fmt.Printf("regex: '%v'\n", regex)
matches := regex.FindStringSubmatch(source_txt)
for i, v := range matches {
fmt.Printf("match %2d: '%s'\n", i+1, v)
}
}
輸出:
Experiment with regular expressions.
source text:
--------------------------------
bus driver drove steady although the bus's steering was going nuts.
--------------------------------
regex: '(?s)bus'.\s+(.*?nuts)'
match 1: 'bus's steering was going nuts'
match 2: 'steering was going nuts'
的FindStringSubmatch():
識(shí)別 s 中正則表達(dá)式最左邊的匹配項(xiàng)及其子表達(dá)式的匹配項(xiàng)(如果有)
這match[1]將是第一個(gè)捕獲組。

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
我的搜索的正確答案應(yīng)該是"steering was going nuts"......
如果您希望該子字符串作為您的匹配結(jié)果,您應(yīng)該相應(yīng)地調(diào)整您的正則表達(dá)式。
re := regexp.MustCompile("(?s)bus's (.*?nuts)")
rm := re.FindStringSubmatch(str)
if len(rm) != 0 {
fmt.Printf("%q\n", rm[0]) // "bus's steering was going nuts"
fmt.Printf("%q", rm[1]) // "steering was going nuts"
}
- 2 回答
- 0 關(guān)注
- 285 瀏覽
添加回答
舉報(bào)