go的正则匹配换行和js不一样吗?

作者站长头像
站长
· 阅读数 4
tetsdfdsf

## Contents

- [test](#test)
  - [Contents](#contents)
  - [test2](#test2)
  - [fdf and dfdf](#dfdf-and-dffd)
  - [dfdf](#dfdf)
  - [dfdf Building](#dfdf-building)
  - [Build dfdf](#build-dfdf)
  - [dfdf Line](#df-dfd)
    - [dfd dfdf dfd](#advanced-console-dfd)
    - [dfdf dfdf](#standard-cli)
  - [dfdf](#configuration)
  - [Continuous Integration](#continuous-integration)
  - [dddd Preprocessors](#dddd-preprocessors)

**[⬆ back to top](#contents)**

上面这段文本,我用这个正则Contents\n\n(.|\n)+?\n\n匹配中间的内容。

用网页版的在线正则测试是可以匹配出来中间的结果的,用go正则结果却是空的,什么问题?

var matchMenu = regexp.MustCompile(`Contents\n\n(.|\n)+?\n\n`)
menuData := matchMenu.FindSubmatch(getContent())
slog.Info(fmt.Sprintf("%#v", menuData))

输出结果:2023/10/25 17:53:04 INFO [][]uint8(nil)

问问这什么差异?

回复
1个回答
avatar
test
2024-06-25

又没有可能是你的getContent()内容未转译?

我按照你的方式在本地直接使用字符串是可以匹配的;

package main

import (
    "fmt"
    "regexp"
)

func main() {
    const str = `tetsdfdsf

## Contents

- [test](#test)
  - [Contents](#contents)
  - [test2](#test2)
  - [fdf and dfdf](#dfdf-and-dffd)
  - [dfdf](#dfdf)
  - [dfdf Building](#dfdf-building)
  - [Build dfdf](#build-dfdf)
  - [dfdf Line](#df-dfd)
    - [dfd dfdf dfd](#advanced-console-dfd)
    - [dfdf dfdf](#standard-cli)
  - [dfdf](#configuration)
  - [Continuous Integration](#continuous-integration)
  - [dddd Preprocessors](#dddd-preprocessors)

**[⬆ back to top](#contents)**
`

    reg := regexp.MustCompile(`Contents\n\n(.|\n)+?\n\n`)

    fmt.Printf("%#v", reg.FindSubmatch([]byte(str))[0])
}

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容