我是围棋初学者。我正在尝试将段落与 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/