Go Regexp: Understanding Any Character Match
Go re2 語法文件指出任意字元(.) 符合任意字符,包括換行符當「 s”標誌被設定時。然而,最近的一個查詢引起了人們的擔憂,因為測試程序似乎表明情況並非如此。
程序結果意外
提供的程序(http://play.golang.org /p/pccP52RvKS) 旨在匹配所有字符,包括換行符,但其結果顯示任何字元都不符合換行符。
解決差異
像許多其他一樣正則表達式引擎,Go 的 re2 不匹配帶有“.”的換行符。預設為元字元。若要啟用換行符匹配,必須將“?s”(點全)標誌新增至正規表示式。
有「?s」標誌的範例
修改版本包含「?s」標誌的測試程式:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?s). ")
match := re.FindString("abc\ndef")
fmt.Println(match)
}
執行時,程式正確列印“abc\ndef”,表明任意字元現在按預期匹配換行符。
結論
在 Go 的 re2 語法中,“.”元字符本質上並不匹配換行符。若要啟用換行符匹配,必須將“?s”標誌新增至正規表示式。透過合併此標誌,使用者可以確保與 re2 語法文件保持一致的準確匹配行為。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3