我在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]]+
^