Go의 "알 수없는 이스케이프 시퀀스"오류
Go로 작성된 다음 기능이 있습니다. 아이디어는 함수에 문자열이 전달되고 발견 된 첫 번째 IPv4 IP 주소를 반환한다는 것입니다. IP 주소가 없으면 빈 문자열이 반환됩니다.
func parseIp(checkIpBody string) string {
reg, err := regexp.Compile("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
if err == nil {
return ""
}
return reg.FindString(checkIpBody)
}
내가 얻는 컴파일 타임 오류는
알 수없는 이스케이프 시퀀스 :.
'.'
내가 찾고있는 실제 캐릭터가 Go에게 어떻게 알릴 수 있습니까? 나는 그것을 피하는 것이 속임수를 쓸 것이라고 생각했지만 분명히 내가 틀렸다.
\
백 슬래시는 정규식 파서에 의해 해석되지 않는, 그것은 문자열 리터럴로 해석되고있다. 백 슬래시를 다시 이스케이프해야합니다.
regexp.Compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
와 인용 문자열 "
큰 따옴표 문자는 이동의 "해석 문자열 리터럴"로 알려져있다. 해석 된 문자열 리터럴은 대부분의 언어에서 문자열 리터럴과 같습니다. \
백 슬래시 문자는 문자 그대로 포함되지 않고 다음 문자에 특별한 의미를 부여하는 데 사용됩니다. 소스는 \\
구문 분석 된 값에서 단일 백 슬래시 문자를 얻으려면 연속으로 두 개의 백 슬래시를 포함해야합니다 .
Go에는 정규 표현식에 대한 문자열 리터럴을 작성할 때 유용한 또 다른 대안이 있습니다. "원시 문자열 리터럴"은 `
백틱 문자 로 인용됩니다 . 원시 문자열 리터럴에는 특수 문자가 없으므로 패턴에 백틱이 포함되지 않는 한 아무것도 이스케이프하지 않고이 구문을 사용할 수 있습니다.
regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`)
Go 사양의 "문자열 리터럴"섹션에 설명되어 있습니다.
IPv4 주소 (정확한 캡처)
0.0.0.0에서 255.255.255.255까지 일치
이 정규식을 사용하여 IP 번호를 정확하게 일치 시키십시오.
4 개의 번호는 각각 캡처 그룹에 저장되므로 추가 처리를 위해 액세스 할 수 있습니다.
"(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"
참조 URL : https://stackoverflow.com/questions/6770898/unknown-escape-sequence-error-in-go
'programing' 카테고리의 다른 글
html로 테이블 행을 그룹화하여 jquery로 조작하는 방법 (0) | 2021.01.19 |
---|---|
배열을 크기 0으로 초기화하면 어떻게됩니까? (0) | 2021.01.19 |
TFS에서 사용자의 모든 "변경 집합"목록을 가져 오는 방법은 무엇입니까? (0) | 2021.01.19 |
삼중 결장 스칼라 (0) | 2021.01.19 |
NSURLConnection sendAsynchronousRequest : queue : completionHandler : 연속으로 여러 요청을 생성합니까? (0) | 2021.01.19 |