拆分分隔符 java

Split Delimiter java

i've found an answer when searching in Whosebug, it works perfectly but when i saw the comment the user doesn't explain how the code works, can someone explain to me how does this code means?....

String input =
      "        [John, 8, 9, 10, \r\n"
    + "       , Peter, 10, 8, 7, \r\n"
    + "       , Steve, 8, 9, 6, \r\n"
    + "         ]";
String output = input.replaceAll("(?m)^[\s,\[]+|[\s,\]]+$|[\s&&[^\r\n]]+", "");
System.out.println(output);

根据评论回答您的问题:

"[\s&&[^\r\n]]+" 这部分我根本不明白,我不知道逗号消失的地方是无逗号分隔符,并且只有括号定界符” – Jansen Stanlie

我将忽略字符串转义并将其写为真正的正则表达式。 在正则表达式的 java 风格中,您可以使用 class 进行交集和减法:

[..&&[..]][..&&[^..]。将 .. 替换为您的字符 class 和 inclusion/exclusion 范围。

例如

[a-z&&[^aeiou]] 会给你一个不是元音的英文小写字母。

因此,在您的示例中(删除 java 字符串转义) [\s&&[^\r\n]] - \s 任何空白字符,\r 或 \n 除外。这样做是为了去掉所有空格,但保留换行符。

这也可以写成 [\s&&[\V]] 这将使它符合 Unicode。 \V 是 不是 垂直空格的任何字符。

逗号去掉哪里的问题: 此处删除了前导逗号:

(?m)^[\s,\[]+|[\s,\]]+$|[\s&&[^\r\n]]+
         ^

和尾随:

(?m)^[\s,\[]+|[\s,\]]+$|[\s&&[^\r\n]]+
                    ^