我有一个Scala方法,目前接受输入并将其与正则表达式匹配:
def valiateMap(mapDef : String) : String = {
val mapRegex = "map<([int,string,date]),([int,string,date])>".r
mapDef match {
case mapRegex(keyGroup, valueGroup) => "Yes, we have a match!"
case _ => "'Fraid not."
}
}
如您所见,传入各种值将产生以下结果:
validateMap("map<int,date>")
-> "是的,我们有一个匹配!"validateMap("fizzbuzz")
-> "'很遗憾,没有匹配。"validateMap("map<int,fizz>")
-> "'很遗憾,没有匹配。"(fizz不符合正则表达式的规定)
现在我需要将这个正则表达式递归,以便“valueGroup”(第2组)的值本身可以是一个地图,其遵循与上述相同的正则表达式。那张地图也可能会有一个地图作为其值,该地图需要遵守相同的正则表达式。以此类推。
因此,我需要修改正则表达式(和/或代码)以处理以下输入:
validateMap("map<int,map<date,string>>")
-> "是的,我们有一个匹配!"validateMap("map<int,map<int,map<int,string>>>")
-> "是的,我们有一个匹配!"validateMap("map<int,map<fizz,date>>")
-> "'很遗憾,没有匹配。"
关键是这需要是(可能)无限递归的,并处理任何数量的内部嵌套映射。
有任何想法如何实现这一点吗?