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中文网其他相关文章!