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中文網其他相關文章!