Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Scala regex从字符串中提取属性和关联值_String_Scala - Fatal编程技术网

String Scala regex从字符串中提取属性和关联值

String Scala regex从字符串中提取属性和关联值,string,scala,String,Scala,考虑枚举属性名称并后跟赋值的字符串,例如 val s = """id=id1,desc="a description, details",location="a location"""" 其中,每个属性值可能包括带逗号的带引号的字符串 例如,如何将每个属性值提取到 case class Row(id: String, location: String, desc: String) 首先,在引号外的逗号上拆分,然后在等号上拆分 val split_str = s.split(""",(?=([

考虑枚举属性名称并后跟赋值的字符串,例如

val s = """id=id1,desc="a description, details",location="a location""""
其中,每个属性值可能包括带逗号的带引号的字符串

例如,如何将每个属性值提取到

case class Row(id: String, location: String, desc: String)

首先,在引号外的逗号上拆分,然后在等号上拆分

val split_str = s.split(""",(?=([^"]*"[^"]*")*[^"]*$)""").map(_.split("=").last)
这将为您提供所需字符串的数组:

Array(id1, "a description, details", "a location")
如果要删除这些字符串上的引号,只需在
last
之后添加
。替换(“\”,“”)
。然后只需创建类:

Row(split_str(0), split_str(2), split_str(1))

向我们展示您的尝试。@revo我的第一次尝试包括
s.split(“,”
(由于内部字符串中的逗号而不健全)和
s.split(“=”)
,这使得值和属性ID的关联变得很困难…如果您在
,?[^=,]处拆分会怎么样+=
?如何从这个正则表达式中获取
案例类行的实例?@elm:在回答中添加了这样一点:您的模式在所有逗号上都被拆分。结果数组有4个元素。@jwvh:模式中的引号类型错误,感谢您的注意。它现在应该可以工作了。前瞻
?=
已经无法捕获,所以我不认为
?:
完成任何事情。