>백엔드 개발 >Golang >Go 정규 표현식에서 부정적인 Lookbehind 어설션을 어떻게 시뮬레이션할 수 있나요?

Go 정규 표현식에서 부정적인 Lookbehind 어설션을 어떻게 시뮬레이션할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-01 00:35:12324검색

How Can I Simulate Negative Lookbehind Assertions in Go Regular Expressions?

Go에서 부정 Lookbehind 시뮬레이션

부정 Lookbehind 어설션을 특징으로 하는 원래 정규 표현식은 앞에 @, #, 없이 명령을 추출하는 것을 목표로 합니다. 또는 / 문자. 그러나 Go는 부정적인 뒤돌아보기를 지원하지 않으므로 이 패턴을 구현하는 데 장애물이 됩니다.

정규식 다시 작성

부정적인 뒤돌아보기 없이 동일한 기능을 달성하려면 다음을 대체할 수 있습니다. 문자 집합 내에서 제외할 문자:

[^@#/]\w.*

명령이 다음으로 시작하는 것이 허용되지 않는 경우 문자가 있는 경우 ^ 앵커를 사용하여 이 조건을 적용할 수 있습니다.

(?:^|[^@#\/])\b\w.*

Go 함수를 사용한 대체 접근 방식

또는 Go 함수를 사용하여 입력 문자열:

func Filter(vs []string, f func(string) bool) []string { ... }

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 플레이그라운드(http://play.golang.org/p/ntJRNxJTxo)에서 작동 데모를 찾을 수 있습니다.

위 내용은 Go 정규 표현식에서 부정적인 Lookbehind 어설션을 어떻게 시뮬레이션할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.