我发现了自己几年前写的一段旧代码。然而,现在我完全不知道它为什么能够运行。在进行代码更改之前,我需要了解它为什么能够运行。
我有一个 CSV 格式的数据。
"abc",123456789,"def"
有时,服务器会返回以下内容给我:
"abc",123,456,789,"def"
因此,我编写了以下代码来解决这个问题。
public class Sandbox {
private static final Pattern digitPattern = Pattern.compile("(\",)|,(?=[\\d,]+,\")");
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// "abc",123,456,789,"def"
String data = "\"abc\",123,456,789,\"def\"";
final String result = digitPattern.matcher(data).replaceAll("$1");
// "abc",123456789,"def"
System.out.println(result);
}
}
然而,当我回顾代码时,我不知道为什么
|,
和 [\\d,]+
能帮助我去除逗号。输入的哪一部分与 |,
匹配呢?非常感谢逐步解释解析过程。
data = data.replaceAll("(\\d),(\\d)", "$1$2");
呢? - jlordo|
表示或,就像匹配它前面的内容或后面的内容。 - Sotirios Delimanolis