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 중국어 웹사이트의 기타 관련 기사를 참조하세요!