我有以下字符串,它是来自我们网络上的投影仪的发现数据包:
AMXB<-SDKClass=VideoProjector><-UUID=ABCDEFG><-Make=DELL><-Model=S300w><-Revision=0.2.0>
我正在尝试编写一些将其转换为地图的 Golang 代码,以便我可以调用details["UUID"]并让它返回ABCDEFG。我写了一个看起来像这样的正则表达式:
(?:UUID=)(?P<UUID>(.*?))>|(?:Make=)(?P<Make>(.*?))>|(?:Model=)(?P<Model>(.*?))>|(?:SDKClass=)(?P<SDKClass>(.*?))>
当我使用regex 101在线测试时,它似乎与所有内容都匹配得很好,除了编号组,但我可以很容易地忽略那些:
匹配 1
SDKClass [15-29] VideoProjector
[15-29] 投影仪
第 2 场
UUID [37-49] B8AC6FDFE1E2
[37-49] B8AC6FDFE1E2
第 3 场
制造 [57-61] 戴尔
[57-61] 戴尔
第 4 场
型号 [70-75] S300w
[70-75] S300w
但是当我在 Golang 中尝试时,我得到了不同的结果(注意:这些结果使用 go- spew整理以使其更易于阅读):
([][]string) (len=4 cap=10) {
([]string) (len=9 cap=9) {
(string) (len=24) "SDKClass=VideoProjector>",
(string) "",
(string) "",
(string) "",
(string) "",
(string) "",
(string) "",
(string) (len=14) "VideoProjector",
(string) (len=14) "VideoProjector"
},
([]string) (len=9 cap=9) {
(string) (len=18) "UUID=B8AC6FDFE1E2>",
(string) (len=12) "B8AC6FDFE1E2",
(string) (len=12) "B8AC6FDFE1E2",
(string) "",
(string) "",
(string) "",
(string) "",
(string) "",
(string) ""
},
([]string) (len=9 cap=9) {
(string) (len=10) "Make=DELL>",
(string) "",
(string) "",
(string) (len=4) "DELL",
(string) (len=4) "DELL",
(string) "",
(string) "",
(string) "",
(string) ""
},
([]string) (len=9 cap=9) {
(string) (len=12) "Model=S300w>",
(string) "",
(string) "",
(string) "",
(string) "",
(string) (len=5) "S300w",
(string) (len=5) "S300w",
(string) "",
(string) ""
}
}
我的正则表达式有什么问题,我该如何解决?我已经尝试了几乎所有表达式组合(我现在几乎是正则表达式大师:\)
收到一只叮咚
江户川乱折腾
手掌心
随时随地看视频慕课网APP
相关分类