首页 > 后端开发 > Golang > 正文

Go Regexp:点字符默认匹配换行符吗?

DDD
发布: 2024-10-27 05:38:03
原创
841 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板