Scala中的这条分割线是什么意思?

时间:2013-06-03 07:27:11

标签: regex scala

我遇到某个Scala代码的问题,我找到了这个分割线。之前我只使用过分割线:

var newLine = line.split(",")

但这种分裂意味着什么?

var newLine2 = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")

我需要拆分的行看起来像这样:

1966, "Green, Green Grass of Home", Tom Jones, 850000

提前致谢!

2 个答案:

答案 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