有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java按正则表达式拆分字符串

我需要用正则表达式拆分java中的字符串,但我不太确定如何拆分。我得走了

[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]

方括号内的文字。我需要弄到绳子的所有部分

预期产出:

[Caps]
[RCaps]
C
[Caps]
[RCaps]
atalog
[Caps]
[RCaps]

方括号内的文本可以是任何内容。在本例中,它是“Caps”和“rcap”,但也可以是“Potato”


共 (3) 个答案

  1. # 1 楼答案

    "[""]"是称为元字符的正则表达式匹配字符。你需要在它之前添加转义字符\\[\\]

    你需要试试这样的东西:

    String str = "[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]";
    Pattern pattern = Pattern.compile("\\[?(\\w)+\\]?");
    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
        System.out.print(matcher.group());
    }
    

    Output:

    [Caps] [RCaps] C [Caps] [RCaps] atalog [Caps] [RCaps]

  2. # 2 楼答案

    您需要做的是在[字符之前和]字符之后拆分,这将转换为regex (?=\\[)|(?<=\\])

    例如:

    String string = "[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]";
    String[] result = string.split("(?=\\[)|(?<=\\])");
    System.out.println(Arrays.toString(result));
    

    这张照片是:

    [[Caps], [RCaps], C, [Caps], [RCaps], atalog, [Caps], [RCaps]]
    
  3. # 3 楼答案

    您可以使用此模式来捕获所需内容,而不是拆分

    (\[[^][]*\]|[^][]+)  
    

    Demo