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$`
패턴 설명
업데이트된 패턴은 다음 기준을 충족하는 문자열과 일치합니다.
결론
원시 문자열 리터럴을 사용하여 정규식 패턴이 해석되도록 보장합니다. 이를 통해 패턴이 의도한 대로 원하는 입력 문자열과 정확하게 일치할 수 있습니다.
위 내용은 My Go Regex가 왜 일치하지 않나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!