我希望形成一个正则表达式来解析具有以下格式的字符串,并将其作为键值对分隔,键为[test,2],值为11,依旧等等。
[test,2]=11, [test,3]=12, [test,7]=11, [test,11]=4, [test,16]=5
一旦形成了正确的正则表达式,我就可以用这种方式将关键值对加载到地图中
<REGEX_PATTERN>.findAllMatchIn(input).map(m => (m.group(1).trim(), m.group(2).trim())).toMap
使用正则表达式模式感知任何指针。
答案 0 :(得分:2)
尝试这样的模式:
val pattern = "(\\[\\w+,\\d+\\])=(\\d+)(,\\s)?"r
示例:
scala> val input = """[test,2]=11, [test,3]=12, [test,7]=11, [test,11]=4, [test,16]=5"""
input: String = [test,2]=11, [test,3]=12, [test,7]=11, [test,11]=4, [test,16]=5
scala> val pattern = "(\\[\\w+,\\d+\\])=(\\d+)(,\\s)?"r
warning: there were 1 feature warning(s); re-run with -feature for details
pattern: scala.util.matching.Regex = (\[\w+,\d+\])=(\d+)(,\s)?
scala> val m = pattern.findAllMatchIn(input).map(m => (m.group(1).trim(), m.group(2).trim())).toMap
m: scala.collection.immutable.Map[String,String] = Map([test,2] -> 11, [test,16] -> 5, [test,11] -> 4, [test,3] -> 12, [test,7] -> 11)
scala> m foreach println
([test,2],11)
([test,16],5)
([test,11],4)
([test,3],12)
([test,7],11)