Go Regexp:理解任意字符匹配
Go re2 語法文檔指出任意字符(.) 匹配任意字符,包括換行符當“ s”標誌被設定時。然而,最近的查詢引起了擔憂,因為測試程序似乎表明情況並非如此。
程式結果意外
提供的程式(http://play.golang.org /p/pccP52RvKS) 旨在匹配所有字符,包括換行符,但其結果顯示任何字元都不符合換行符。
解決差異
與許多其他字元一樣正規表示式引擎,Go 的 re2 不符合帶有「.」的換行符。預設為元字元。若要啟用換行符匹配,必須將“?s”(點全)標誌新增至正規表示式。
有「?s」標誌的範例
修改版本包含「?s」標誌的測試程式的範例:
<code class="go">package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile("(?s).+") match := re.FindString("abc\ndef") fmt.Println(match) }</code>
執行時,程式正確列印“abcndef”,表示任何字元現在都按預期匹配換行符。
結論
Go 的 re2 語法中,「.」元字元本質上並不符合換行符。若要啟用換行符匹配,必須將“?s”標誌新增至正規表示式。透過合併此標誌,使用者可以確保與 re2 語法文件保持一致的準確匹配行為。
以上是Go Regexp 的「.」是否符合換行符號?任何字元匹配的意外行為。的詳細內容。更多資訊請關注PHP中文網其他相關文章!