我对某个 Scala 代码有疑问,我在其中找到了这条分割线。在我只使用分割线之前,例如:
var newLine = line.split(",")
但是这种分裂是什么意思呢?
var newLine2 = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")
我需要拆分的行如下所示:
1966, "Green, Green Grass of Home", Tom Jones, 850000
提前致谢!
split 方法中的字符串定义了一个正则表达式。该组(?=([^\"]*\"[^\"]*\")*[^\"]*$)
是一个积极的前瞻性断言。这意味着以逗号分隔,但前提是模式([^\"]*\"[^\"]*\")*[^\"]*$
跟随逗号。
([^\"]* # 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
这意味着它只会在逗号后面有相同数量的双引号时拆分,所以换句话说,只有当逗号不在双引号内时才拆分。(只要字符串中只有一对引号,这将起作用。)
这是一个正则表达式(“RegEx”),有关解释,请参见http://en.wikipedia.org/wiki/Regular_expression