ホームページ  >  記事  >  バックエンド開発  >  Go Regexp: ドット文字はデフォルトで改行と一致しますか?

Go Regexp: ドット文字はデフォルトで改行と一致しますか?

DDD
DDDオリジナル
2024-10-27 05:38:03843ブラウズ

Go Regexp: Does the Dot Character Match Newline by Default?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。