我有一个像这样的字符数组:
chars := []string{".", "-", "(", ")"}
Run Code Online (Sandbox Code Playgroud)
当我以常规方式(strings.Join(chars, ""))将它们加入并传递给它时regexp.MustCompile,它的恐慌:
panic: regexp: Compile(`[.-()]`): error parsing regexp: invalid character class range: `.-(`
Run Code Online (Sandbox Code Playgroud)
如何在golang regexp中使用字符串特殊字符作为字符而非regexp运算符?
您必须将-项目放在数组的开头/结尾,以便-显示在字符类的开头[-.()]- 或结尾 - [.()-].
或者-在chars数组中转义:"\\-".
注:这不是唯一的条件,则^和]也必须进行转义,或放置在字符类的特定位置.在\必须始终逃脱.
查看Go演示:
package main
import (
"fmt"
"strings"
"regexp"
)
func main() {
chars := []string{"]", "^", "\\\\", "[", ".", "(", ")", "-"}
r := strings.Join(chars, "")
s := "[Some]-\\(string)^."
re := regexp.MustCompile("[" + r + "]+")
s = re.ReplaceAllString(s, "")
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)
输出: Somestring
请注意,^必须不是第一项,]必须在开头和-结尾.
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |