将python先行断言正则表达式转换为有效的Golang

将python先行断言正则表达式转换为有效的Golang,python,regex,go,Python,Regex,Go,我有以下在Python中运行良好的正则表达式(由于前瞻断言) some_list=re.findall('^(?=Name:)(.**(?=USB\Device\Filters:)',myinput,re.MULTILINE | re.DOTALL) 请参见下面代码块中的myinput示例 名称:将始终是组的开头,USB设备筛选器:将始终是组的结尾。并非所有行都有有效的key:value,例如,可以有或有空行 Name: Server1 10.0.0.11 Groups:

我有以下在Python中运行良好的正则表达式(由于前瞻断言)

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

请参见下面代码块中的
myinput
示例

名称:将始终是组的开头,USB设备筛选器:将始终是组的结尾。并非所有行都有有效的key:value,例如,可以有或有空行

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:
Name:Server1 10.0.0.11
小组:/
来宾操作系统:Ubuntu(64位)
\n
USB设备筛选器:
名称:Server2 10.0.0.12
小组:/
来宾操作系统:Debian(64位)
\n
USB设备筛选器:
有人能帮我把它转换成一个有效的Golang正则表达式吗

最终的目标是解析myinput并获得匹配组的切片。

在Python中给出了以下内容:

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

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

您可以通过以下方式在Golang捕获相同的内容:

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

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

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


您不需要使用两种语言的
(?=USB\Device\Filters:)
来转义空格。都设置了
(?ms)
标志。

谢谢@dawg。这让我走上了正确的道路。我昨晚一定是昏过去了,忘了带国旗了。这最终对我起了作用
regexp.MustCompile(`(?ms)^(名称:.*USB设备筛选器:`)