拆分分隔符java



我在stackoverflow中搜索时找到了一个答案,它有效很好,但当我看到评论时,用户没有解释代码是有效的,有人能向我解释一下这个代码是什么意思吗?。。。。

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

从评论中回答您的问题:

";[\s&&[^\r\n]]+"这是我完全不理解的部分,我不知道逗号在哪里消失,而is是nocomma分隔符,只有括号delimter"-Jansen Stanlie

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

[..&&[..]][..&[^..]。代替以及您的角色类别和包含/排除范围。

例如

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

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

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

关于逗号删除位置的问题:此处删除了前导逗号:

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

和尾随:

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

最新更新