Go Regexp: Does Any Character Match Newline?
Go의 re2 구문에 있는 모든 문자(.)가 모든 문자와 일치한다는 문서의 설명에도 불구하고 개행 문자(s=true)를 포함한 문자, 경우에 따라 그렇지 않은 경우도 있습니다. 예를 들어 다음 프로그램은 모든 문자가 개행 문자와 일치하지 않음을 보여줍니다.
<code class="go">import "regexp" func main() { str := "hello\nworld" match, _ := regexp.MatchString(".*", str) println(match) // false }</code>
해결책: Dot All Flag
이 문제를 해결하려면 Go의 정규 표현식 패키지를 사용하세요. "모두 점" 플래그(?s)를 제공합니다. 정규식에 추가하면 이 플래그를 사용하면 점 문자(.)가 개행 문자와 일치할 수 있습니다.
<code class="go">func main() { str := "hello\nworld" match, _ := regexp.MatchString("(?s).*", str) println(match) // true }</code>
(?s) 플래그를 사용하면 모든 문자(.)가 이제 개행 문자와 일치합니다. 이는 일반적으로 기본적으로 개행 문자와 일치하지 않는 대부분의 다른 정규식 엔진의 동작과 일치합니다.
위 내용은 Go Regexp: 도트 문자는 기본적으로 개행 문자와 일치합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!