>  기사  >  백엔드 개발  >  My Go Regex가 왜 일치하지 않나요?

My Go Regex가 왜 일치하지 않나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-18 20:59:02246검색

Why Doesn't My Go Regex Match?

Go에서 Regex가 작동하지 않음: 문제 이해

정규 표현식 패턴이 단순해 보이지만 Go에서 일치하지 않는 이유는 무엇입니까? 가다? 문제를 자세히 살펴보고 해결책을 찾아보겠습니다.

원본 코드 및 출력

다음 Go 코드를 고려하세요.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    a := "parameter=0xFF"
    regex := "^.+=\b0x[A-F][A-F]\b$"
    result, err := regexp.MatchString(regex, a)
    fmt.Println(result, err)
}

놀랍게도 출력은 false이며 일치 실패를 나타냅니다. 이는 제공된 입력 및 패턴을 기반으로 한 일치에 대한 기대와 모순됩니다.

구조를 위한 원시 문자열
이 문제를 해결하는 열쇠는 정의 시 원시 문자열 리터럴을 사용하는 데 있습니다. 정규식 패턴. 원시 문자열 리터럴은 큰따옴표(") 대신 역따옴표(`)로 묶인 일련의 문자입니다.

원시 문자열 리터럴을 사용하면 Go에서 백슬래시를 이스케이프 문자로 해석하지 못하게 됩니다. 이것이 중요합니다. 패턴에 특정 일치 조건을 정의하는 이스케이프 시퀀스(b 및 x)가 포함되어 있기 때문입니다.

업데이트된 코드

원시 문자열 리터럴을 사용하면 코드는 다음과 같습니다.

var regex string = `^.+=\b0x[A-F][A-F]\b$`

패턴 설명

업데이트된 패턴은 다음 기준을 충족하는 문자열과 일치합니다.

  • 문자 수에 제한 없이 시작합니다(. )
  • 등호(=) 포함
  • 뒤에 접두사 "0x"(b0x)
  • 2개의 16진수 문자 포함([A-F][A-F])
  • 단어 경계로 끝남(b)

결론

원시 문자열 리터럴을 사용하여 정규식 패턴이 해석되도록 보장합니다. 이를 통해 패턴이 의도한 대로 원하는 입력 문자열과 정확하게 일치할 수 있습니다.

위 내용은 My Go Regex가 왜 일치하지 않나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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