다음 코드에서 볼 수 있듯이 사용자 입력에서 정규 표현식을 구성하는 시나리오를 고려해 보세요.
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \._-]", -1))
여기서 s.Name은 'North by Northwest'와 같은 문자열입니다. 문자를 반복하고 대소문자를 구분하지 않는 표현식을 수동으로 구성하는 것을 고려할 수 있습니다.
for i := 0; i < len(s.Name); i++ { if s.Name[i] == " " { fmt.Fprintf(str, "%s[ \._-]", str); } else { fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i])) } }
그러나 더 효율적인 솔루션이 있습니다.
플래그(?i)를 시작 부분에 추가하여 대소문자를 구분하지 않는 검색을 지정할 수 있습니다. regex:
reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \._-]", -1))
고정 정규식의 경우 이 플래그를 다음과 같이 사용할 수 있습니다.
r := regexp.MustCompile(`(?i)CaSe`)
정규식 플래그에 대한 자세한 내용은 regexp/syntax 패키지 문서에서 찾을 수 있습니다.
위 내용은 Go에서 대소문자를 구분하지 않는 정규 표현식을 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!