>  기사  >  백엔드 개발  >  My Go 정규식 일치가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

My Go 정규식 일치가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
DDD원래의
2024-11-24 22:19:18958검색

Why Does My Go Regular Expression Match Fail, and How Can I Fix It?

Go에서 정규식 일치가 실패함

정규식을 접하면 특히 경험이 부족한 사람들에게는 당황스러울 수 있습니다. Python과 같은 다른 언어와 비교하여 구문 및 동작의 미묘한 차이로 인해 Go로 작업할 때 이러한 상황은 더욱 악화될 수 있습니다. 특히 사용자는 정규식을 사용하여 특정 패턴을 일치시키려고 할 때 문제에 직면할 수 있습니다.

이러한 시나리오는 최근에 발생했는데, 사용자는 Go에서 문자열을 일치시킬 때 예상치 못한 동작을 경험했습니다. 정규식은 "^. =b0x[A-F][A-F]b$"로 정의되었으며, 비어 있지 않은 문자열과 등호 및 16진수 숫자와 두 개의 16진수 숫자로 구성된 패턴과 일치하도록 정의되었습니다.

Python에서 올바르게 작동했음에도 불구하고 놀랍게도 정규식은 false로 결과가 나왔습니다. 자세히 조사한 결과 정규식 문자열이 원시 문자열 리터럴로 묶이지 않았으며 이는 Go에서 문자가 해석되는 방식에 영향을 미치는 것으로 나타났습니다.

일반 표현식 문자열이 아닌 역따옴표로 표시되는 원시 문자열 리터럴 사용 `` 따옴표 ")는 문자열 내의 이스케이프 시퀀스와 특수 문자가 해석 없이 문자 그대로 처리되도록 보장합니다. 이 경우 원시 문자열 리터럴은 백슬래시와 16진수 문자가 의도한 의미를 유지하도록 보장합니다. 원하는 패턴과 올바르게 일치하도록 정규식을 사용합니다.

아래 표시된 것처럼 정규식 문자열을 원시 문자열 리터럴로 묶으면 일치 작업이 성공적으로 true를 반환했습니다.

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

이 조정을 통해 , Go 프로그램은 이제 주어진 입력 문자열에서 원하는 패턴을 정확하게 일치시키고 추출합니다.

위 내용은 My Go 정규식 일치가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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