将python先行断言正则表达式转换为有效的Golang
我有以下在Python中运行良好的正则表达式(由于前瞻断言)将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:
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设备筛选器:`)