首页 > 解决方案 > 无法使用正则表达式拆分字符串 java

问题描述

我用正则表达式尝试了下面的代码也无法获得预期的输出:

import java.util.*;

public class test {
    public static void main(String args[])
    {
        String cmd1 = "x509 load 2 -----BEGIN PRIVATE KEY-----\\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\\n-----END PRIVATE KEY-----";
        String cmd2 = "x509 load 3 -----BEGIN CERTIFICATE-----\\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\\n-----END CERTIFICATE-----";
        List<String> listcmd1 = Arrays.asList(cmd1.split(" "));
        List<String> listcmd2 = Arrays.asList(cmd2.split(" "));
        System.out.println(listcmd1);
        System.out.println(listcmd2);

    }
}

输出:

[x509, load, 2, -----BEGIN, PRIVATE, KEY-----\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\n-----END, PRIVATE, KEY-----]
[x509, load, 3, -----BEGIN, CERTIFICATE-----\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\n-----END, CERTIFICATE-----]

预期输出:

[x509, load, 2, -----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\n-----END PRIVATE KEY-----]
[x509, load, 3, -----BEGIN CERTIFICATE-----\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\n-----END CERTIFICATE-----]

标签: java

解决方案


您可以使用limit参数来拆分

    String cmd1 = "x509 load 2 -----BEGIN PRIVATE KEY-----\\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\\n-----END PRIVATE KEY-----";
    String cmd2 = "x509 load 3 -----BEGIN CERTIFICATE-----\\nMC4CAQAwBQYDK2VwBCIEILl8VJJBDym8m0IL+ksKwCSNGg+fW6VELvozl2lIZx6g\\n-----END CERTIFICATE-----";
    List<String> listcmd1 = Arrays.asList(cmd1.split(" ", 4));
    List<String> listcmd2 = Arrays.asList(cmd2.split(" ", 4));

这样,第四个也是最后一个元素将包含您的整个密钥。


推荐阅读