Go는 성능상의 이유로 정규 표현식에서 기본적으로 부정적 Lookbehind를 지원하지 않지만 유사한 기능을 달성하기 위해 대체 전략을 사용할 수 있습니다.
원본을 고려해보세요 regex:
\b(?<![@#\/])\w.*
부정된 뒤돌아보기는 문자 집합만 검사하므로 부정된 문자 집합 자체로 대체될 수 있습니다.
\b[^@#/]\w.*
문자가 시작 부분에 나타날 수 있는 경우 문자열에 ^ 앵커를 추가하세요.
(?:^|[^@#\/])\b\w.*
보다 세련된 접근 방식을 위해 필터 기능을 사용할 수 있습니다. 구현됨:
func Filter(vs []string, f func(string) bool) []string { vsf := make([]string, 0) for _, v := range vs { if f(v) { vsf = append(vsf, v) } } return vsf }
그런 다음 이 필터 기능을 프로세스 기능에 사용할 수 있습니다.
func Process(inp string) string { t := strings.Split(inp, " ") t = Filter(t, func(x string) bool { return strings.Index(x, "#") != 0 && strings.Index(x, "@") != 0 && strings.Index(x, "/") != 0 }) return strings.Join(t, " ") }
전반적으로 이러한 기술을 사용하면 Go에서 부정적인 뒤돌아보기를 에뮬레이션할 수 있으며, 이 기능에 대한 직접적인 언어 지원이 부족합니다.
위 내용은 Go 정규 표현식에서 부정적인 Lookbehind를 어떻게 에뮬레이트할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!