将python lookahead断言regex转换为有效的Golang

2024-10-06 12:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下regex,它在Python中很好地工作(由于前瞻性断言)。在

some_list = re.findall('^(?=Name:)(.*?)(?=USB\ Device\ Filters:)', myinput, re.MULTILINE|re.DOTALL)

请参阅下面代码块中的myinput示例。在

名称:将始终是组的开头,USB设备筛选器:将始终是组的结尾。不是所有的行都有一个有效的键:值,例如,可以有或空行。在

Name:            Server1 10.0.0.11
Groups:          /
Guest OS:        Ubuntu (64-bit)
\n
<none>
USB Device Filters:

Name:            Server2 10.0.0.12
Groups:          /
Guest OS:        Debian (64-bit)
\n
<none>
USB Device Filters:

有人能帮我把它转换成一个有效的Golang正则表达式吗?在

最终目标是解析myinput并获得匹配组的一部分。在


Tags: namerenoneosdevicebitsome断言
1条回答
网友
1楼 · 发布于 2024-10-06 12:55:32

考虑到Python中的这一点:

^(?=Name:)(.*?)(?=USB Device Filters:)

Demo

由于^(?=Name:)是一个零宽度断言,Name:由后面的捕获组捕获。在

你可以用这个在果朗捕捉到同样的场景:

^{pr2}$

Demo

如果您不想捕获Name:\s,可以执行以下操作:

^Name:\s*(.*?)USB Device Filters:

Demo

在任何一种语言中,都不需要用(?=USB\ Device\ Filters:)来转义空格。所有这些都设置了(?ms)标志。在

相关问题 更多 >