我有一个长字符串,它是这样构建的:

[[title]]
a = "1"
b = "1"
c = "1"
d = "1"
e = [
 "1",
 "1",
]

[[title]]
a = "2"
b = "2"
c = "2"
d = "2"
e = [
 "2",
]

[[title]]
a = "a3"
b = "3"
c = "3"

[[title]]
a = "a4"
b = "4"
c = "4"
e = [
 "4",
]

我的目标是提取每个标题(没有标题)内的文本,并将其放入一个片段中.

您可以查看下面的我的正则表达式:

(?m)(((\[\[title]]\s*\n)(?:^.+$\n)+?)(d.*?$)(\s*e(.|\n)*?])?)

I want to find a way to extract the data between each title until \n or end of string

Edition:

我正在使用GO,因此无法使用look around\behind语法

谢谢

推荐答案

可以使用从[[title]]到空行匹配的以下模式.

`\[\[title]](.*?)^$`gms

Explanation

  • \[\[title]]匹配[[title]]
  • ( Capturing group
    • .*?个非贪婪匹配,直到下一个匹配
  • )关闭组
  • ^$使用m(多行)标志表示空行

请参见带有Golang regex引擎的Golang.com/r/3ACRCX/1" rel="nofollow noreferrer">demo

Go相关问答推荐

编辑时保留YAML文件中的单引号

如何使用工作区方法扩展克隆的Golang库

在运行时更改 Go lang slog 的日志(log)级别

无法读取postman 中的表单数据

nixOS 上的 Nginx 反向代理在try 加载 css/js 时返回 404

如何解决构建Docker Compose时的权限被拒绝问题

无法使用带有 422 的 go-github 创建提交 - 更新不是快进

Gorm 在自定义字符串类型上返回 scanner 错误

动态 SQL 集 Golang

errors.Wrap 和 errors.WithMessage 有什么区别

在 GORM 中,如何在特定时区配置 autoCreateTime 和 autoUpdateTime?

使用 `didip/tollbooth` 限制每小时最大请求数

为什么 x/net/html Token().Attr 上的 len 在此处为空切片返回非零值?

显示作为服务帐户身份验证的谷歌日历事件 - Golang App

如何在 Unmarshal 中使用泛型(转到 1.18)

try 执行`go test ./... -v`时,Golang中有没有办法设置标志

使用不安全的指针从 [] 字符串中获取值

Go:为一组单个结果实现 ManyDecode

如何允许可转换为指针的泛型类型参数化另一种可转换为指针的泛型类型?

在 go (1.18) 的泛型上实现多态的最佳方法是什么?