首頁  >  文章  >  後端開發  >  Go Regexp:點字元預設符合換行符嗎?

Go Regexp:點字元預設符合換行符嗎?

DDD
DDD原創
2024-10-27 05:38:03736瀏覽

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

Go 正規表示式:任何字元都符合換行符嗎?

儘管文件聲明 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 的regexp 包提供“dot all”標誌(?s)。當新增至正規表示式時,此標誌允許點字元 (.) 符合換行符。

<code class="go">func main() {
    str := "hello\nworld"
    match, _ := regexp.MatchString("(?s).*", str)
    println(match) // true
}</code>

使用 (?s) 標誌,任何字元 (.) 現在都會符合換行符。這與大多數其他正規表示式引擎的行為一致,預設通常不匹配換行符。

以上是Go Regexp:點字元預設符合換行符嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn