2016-12-23 3 views
2

이 같은 문자의 배열을 가지고 :풍경 문자열 특수 문자

: 나는 규칙적인 방법 ( strings.Join(chars, ""))에 그들과 합류하고, regexp.MustCompile에 그것의 공포를 전달할

chars := []string{".", "-", "(", ")"} 

panic: regexp: Compile(`[.-()]`): error parsing regexp: invalid character class range: `.-(` 

golang regexp에서 regexp 연산자가 아닌 문자로 문자열 특수 문자를 scape 할 수 있습니까? [-.()] - - 또는 최종 - [.()-] - - 중 하나를 시작할 때 나타나도록

답변

3

당신은 배열의 시작/끝 부분에 - 항목을 넣어해야합니다 문자 클래스의.

chars 배열의 -을 탈출하십시오 : "\\-".

참고 : 즉, ^]도 탈출, 또는 문자 클래스의 특정 위치에 배치해야합니다, 만주의 없습니다. \은 항상 이스케이프해야합니다.

Go demo 참조 :

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) 
} 

출력 : ^은 첫 번째 항목이 아니어야한다는 Somestring

참고, ]이 끝에서 시작과 -에 있어야합니다.