>백엔드 개발 >Golang >Go Regex를 사용할 때 특정 문자열을 제외하는 방법은 무엇입니까?

Go Regex를 사용할 때 특정 문자열을 제외하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 08:57:24135검색

How to Exclude Specific Strings When Using Go Regex?

Go Regex: 특정 문자열 제외

Go에서는 regexp 패키지를 사용하여 특정 상수 문자열을 제외한 모든 문자열을 일치시키려고 할 때 문제가 발생할 수 있습니다. . Go regexp의 제한된 구문으로 인해 미리보기와 관련된 제안된 많은 솔루션을 적용할 수 없지만 대체 접근 방식을 사용할 수 있습니다.

해결 방법 1: 부정 패턴 생성기 사용

Go regexp 이후 미리보기를 지원하지 않으므로 다음과 같은 외부 서비스 사용을 고려하세요. http://www.formauri.es/personal/pgimeno/misc/non-match-regex 부정 패턴을 생성합니다. 예를 들어 "somestring"에 대한 부정 패턴은 다음과 같습니다.

$ ^([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?$

원래 정규식에서 이 부정 패턴을 사용하려면 마지막(.*)을 <다음 부분 ^>으로 바꾸면 다음과 같습니다. 다음과 같은 패턴:

/[^/]*/[^/]*/(([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?)$

또는 [^/] 패턴을 사용하여 / 대신 0개 이상의 문자와 일치시킬 수 있습니다. of .*.

해결 방법 2: 모든 섹션 캡처 및 값 확인

예측 기능을 사용할 수는 없지만 패턴의 세 부분을 모두 캡처하고 값을 확인할 수 있습니다. 캡처된 값을 사용할지 또는 일치하지 않는 항목을 보고할지 결정하기 위한 첫 번째 캡처 그룹:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := "anything/anything/somestring"
    r := regexp.MustCompile(`^[^/]+/[^/]+/(.*)`)
    val := r.FindStringSubmatch(s)

    if len(val) > 1 && val[1] != "somestring" {
        fmt.Println(val[1])
    } else {
        fmt.Println("No match")
    }
}

위 내용은 Go Regex를 사용할 때 특정 문자열을 제외하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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