我有一个superheroes字符串,它们都有名字,但不是所有的都有属性。
它有一个格式为⛦Name⛯☾atta Data☽,其中attaName☾atta Data☽是可选的。
superheroes字符串如下:
⛦superman⛯shirt☾blue☽⛦joker⛯⛦spiderman⛯age☾15yo☽girlFriend☾Cindy☽
我希望使用Regex提取字符串,并将结果填充到映射的一个片段中,如下所示:
[ {name: superman, shirt: blue},
{name: joker},
{name: spiderman, age: 15yo, girlFriend: Cindy} ]
我在Go上做不到。然后我又使用regex⛦(\w+)⛯(?:(\W+)☾(\w+)☽),但它只能捕获单个属性,即无法捕获年龄属性的regex。
我的代码:
func main() {
re := regexp.MustCompile("⛦(\\w+)⛯(?:(\\w+)☾(\\w+)☽)*")
fmt.Printf("%q
", re.FindAllStringSubmatch("⛦superman⛯shirt☾blue☽⛦joker⛯⛦spiderman⛯age☾15yo☽girlFriend☾Cindy☽", -1))
}
Go代码在这里:https://play.golang.org/p/Epv66LVwuRK
运行结果如下:
[
["⛦superman⛯shirt☾blue☽" "superman" "shirt" "blue"]
["⛦joker⛯" "joker" "" ""]
["⛦spiderman⛯age☾15yo☽girlFriend☾Cindy☽" "spiderman" "girlFriend" "Cindy"]
]
age消失了,哪里出错了?