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 中国語 Web サイトの他の関連記事を参照してください。