6

我对某个 Scala 代码有疑问,我在其中找到了这条分割线。在我只使用分割线之前,例如:

var newLine = line.split(",")

但是这种分裂是什么意思呢?

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

我需要拆分的行如下所示:

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

提前致谢!

4

2 回答 2

11

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

这意味着它只会在逗号后面有相同数量的双引号时拆分,所以换句话说,只有当逗号不在双引号内时才拆分。(只要字符串中只有一对引号,这将起作用。)

于 2013-06-03T07:34:40.823 回答
2

这是一个正则表达式(“RegEx”),有关解释,请参见http://en.wikipedia.org/wiki/Regular_expression

于 2013-06-03T07:29:36.507 回答