1 回答

TA貢獻1877條經驗 獲得超6個贊
如果您有一個 para 需要從中識別字符串,那么您可能可以使用兩個正則表達式來實現它:
namePattern := `\[(\w+)\]`
replacerRegex := regexp.MustCompile(namePattern)
finderRegex := regexp.MustCompile("hello " + namePattern + ", I'm " + namePattern)
fmt.Println(re.ReplaceAllString(re1.FindString("hi hih hi hello [Jim], I'm [Sam]"), "[MR $1]"))
https://go.dev/play/p/kv6CfTv0-sk
編輯:
保留字符串其他部分的簡單方法(PS:可以優化并需要檢查邊緣情況)
str := "pre string hello [Jim], I'm [Sam] post string"
namePattern := `\[(\w+)\]`
finderRegex := regexp.MustCompile("hello " + namePattern + ", I'm " + namePattern)
replacerRegex := regexp.MustCompile(namePattern)
// string part subject to replacement
str_rep := finderRegex.FindString(str)
// array of string holding the pre and post part ( check for str_rep as it could be empty)
strPart := strings.Split(str, str_rep)
replaced_str := replacerRegex.ReplaceAllString(str_rep, "[MR $1]")
// concat to get the final string (implement checks for edge cases)
finalStr := strPart[0] + replaced_str + strPart[1]
fmt.Println(finalStr)
- 1 回答
- 0 關注
- 134 瀏覽
添加回答
舉報