regex - 在 Go 中匹配段落

标签 regex go

我是围棋初学者。我正在尝试将段落与 regexp 匹配:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := `first paragraph

second paragraph

third paragraph`

    r, _ := regexp.Compile(`(.+)(\n\n)`)

    fmt.Println(r.FindAllString(str, -1))
}

输出是这样的:

[first paragraph

 second paragraph

]

我认为它也匹配空行。我只想匹配段落(第一段第二段)。

如何修改我的代码来完成它?

最佳答案

您可以尝试使用 re2-compliant regexp , (?s).*?(\n\n|$)(参见 playground example ):

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := `first paragraph
second line of first paragraph

second paragraph

third paragraph
second line of third paragraph`

    r, _ := regexp.Compile(`(?s).*?(\n\n|$)`)

    res := r.FindAllString(str, -1)
    fmt.Printf("%+v %d", res, len(res))
}

那会输出:

[first paragraph
second line of first paragraph

 second paragraph

 third paragraph
second line of third paragraph] 3

关于regex - 在 Go 中匹配段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827207/

相关文章:

go - 为什么 SetAge() 方法不能正确设置年龄?

bash - golang - 在空的 bash 窗口中打开文件

python - 调试python3中无效的utf-8字符

正则表达式负先行匹配除特定字符串以外的所有内容

regex - 如何将段落重新换行至特定行长?

java - 正则表达式中的嵌套括号

python - 将文件名与前面的零匹配

c - 当我通过 Cgo 导入 2 个使用 C 包的不同包时,Go 编译返回体系结构 x86_64 错误的重复符号

json 解码/解码在 json 中没有按预期工作

json - 编码(marshal) map 到 JSON