java - 正则表达式删除方括号内的逗号和空格

标签 java regex

您好,我有一个如下所示的文件:

year.", [229, 338], null, [1144, 2371]
year....", null, null, [812]
year:, null, null, [1019, 1028, 2463]
year;, null, [164], [1052]

这就是我希望文件的样子

year.", 229:338, , 1144:2371
year....", , , 812
year:, , , 1019:1028:2463
year;, , 164, 1052

我已经尝试过 .replaceAll(",[?=[^()]*\\]]",":") 但这只是替换所有逗号而不是括号内的逗号。

最佳答案

看起来你想要

  • 删除所有null
  • number, number, number 替换为 number:number:number,换句话说,将前面有数字的每个 , 替换为 :
  • 删除[]

演示:

String input = 
        "year.\", [229, 338], null, [1144, 2371]\r\n" + 
        "year....\", null, null, [812]\r\n" + 
        "year:, null, null, [1019, 1028, 2463]\r\n" + 
        "year;, null, [164], [1052]";

String expected = 
        "year.\", 229:338, , 1144:2371\r\n" + 
        "year....\", , , 812\r\n" + 
        "year:, , , 1019:1028:2463\r\n" + 
        "year;, , 164, 1052";

input = input.replace("null", "")
             .replaceAll("(?<=\\d), ", ":")
             .replaceAll("\\[|\\]", "");

System.out.println(input.equals(expected));

输出:true

关于java - 正则表达式删除方括号内的逗号和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42195766/

相关文章:

java - 自定义日期选择器,有几年可供选择

Java:父类(super class)的接口(interface)泛型

regex - Preg-match 返回错误值?

java - 我的 @Around 建议不会被包中的所有方法调用

java - 编译Java文件时出错(数组,嵌套if语句)

regex - Powershell正则表达式:如果整个字符串包含的句号既不是开头也不是结尾,则匹配整个字符串

php - MySQL : For big storage, 我应该使用单个重列还是包含数千行的表?

python - 如何在 re.sub 中索引组元素?

正则表达式 : Alternative to backreference in negative lookbehind

32位机器上的Java内存映射