我遇到某个Scala代码的问题,我找到了这个分割线。之前我只使用过分割线:
var newLine = line.split(",")
但这种分裂意味着什么?
var newLine2 = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")
我需要拆分的行看起来像这样:
1966, "Green, Green Grass of Home", Tom Jones, 850000
提前致谢!
答案 0 :(得分:11)
split split方法中的字符串定义了regular expression。
小组(?=([^\"]*\"[^\"]*\")*[^\"]*$)
是positive lookahead assertion。这意味着拆分逗号,但前提是模式([^\"]*\"[^\"]*\")*[^\"]*$
跟在逗号之后。
([^\"]* # a series of non double quote characters
\" # a double quote
[^\"]* # a series of non double quote characters
\") # a double quote
* # repeat that whole group 0 or more times
[^\"]*$ # a series of non double quote characters till the end of the string
这意味着当逗号后面有等量的双引号时,它只会在逗号上拆分,换句话说,只有当逗号不在双引号内时,才会拆分。 (只要字符串中只有引号对,这将有效。)
答案 1 :(得分:2)
这是一个正则表达式(“RegEx”),有关解释,请参阅http://en.wikipedia.org/wiki/Regular_expression