gpt4 book ai didi

regex - 通过 Scala 中的正则表达式从字符串中提取元组

转载 作者:行者123 更新时间:2023-12-01 22:42:36 24 4
gpt4 key购买 nike

我有这样的字符串 {param1=foo}{param2=bar}hello world!
我需要从这个字符串中提取元组数组 (paramName, value) 并得到类似 [(param1, foo), (param2, bar)]

的内容

在 Scala 中是否可以仅通过一个正则表达式提取这些元组?因为我只能以类似的方式做到这一点

val str = "{param1=foo}{param2=bar}hello world!"
val param = """(?<=\{)(.+?)(?=\})""".r // extract everything between { and }
val keyValue = """(.+)=(.+)""".r // for extracting key and value
val parameters = for (keyValue(key,value) <- param.findAllIn(str).toArray)
yield (key,value)

而且看起来一点也不甜。

我也试过用

val param = """(?<=\{)(.+?)=(.+?)(?=\})""".r

但它返回 param=value 作为一个字符串

最佳答案

这是一个表达式,可以找到类似 {A=B} 的内容,其中 AB 不包含 {}=

scala> val Re = """\{([^{}=]+)=([^{}=]+)\}""".r

scala> val Re(a,b) = "{param1=foo}"
a: String = param1
b: String = foo

如果你想找到一个字符串中的所有匹配项:

scala> val s = "{param1=foo}{param2=bar}hello world!"

scala> Re.findAllIn(s).matchData.map(_.subgroups).toList
res9: List[List[String]] = List(List(param1, foo), List(param2, bar))

关于regex - 通过 Scala 中的正则表达式从字符串中提取元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9978523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com