Go Regexp: 모든 문자 일치 이해
Go re2 구문 문서에서는 모든 문자(.)가 개행을 포함한 모든 문자와 일치한다고 명시합니다. "s" 플래그가 설정된 경우. 그러나 최근 질의에 따르면 테스트 프로그램에서는 그렇지 않은 것으로 나타났다.
예상치 못한 프로그램 결과
제공된 프로그램(http://play.golang.org) /p/pccP52RvKS)는 줄바꿈을 포함한 모든 문자를 일치시키는 것을 목표로 하지만 결과는 모든 문자가 줄바꿈과 일치하지 않음을 나타냅니다.
불일치 해결
다른 많은 문자와 마찬가지로 정규식 엔진에서 Go의 re2는 개행 문자를 "."와 일치하지 않습니다. 기본적으로 메타 문자입니다. 개행 일치를 활성화하려면 "?s"(모두 점) 플래그를 정규식에 추가해야 합니다.
"?s" 플래그가 있는 예
수정된 버전 "?s" 플래그를 포함하는 테스트 프로그램:
<code class="go">package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile("(?s).+") match := re.FindString("abc\ndef") fmt.Println(match) }</code>
이 프로그램이 실행되면 "abcndef"가 올바르게 인쇄되어 이제 모든 문자가 예상대로 줄바꿈과 일치함을 보여줍니다.
결론
Go의 re2 구문에서 "." 메타 문자는 본질적으로 개행 문자와 일치하지 않습니다. 개행 일치를 활성화하려면 "?s" 플래그를 정규식에 추가해야 합니다. 이 플래그를 통합함으로써 사용자는 re2 구문 문서에 맞춰 정확한 일치 동작을 보장할 수 있습니다.
위 내용은 Go Regexp의 \'.\'가 개행 문자와 일치합니까? 문자 일치의 예기치 않은 동작.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!