0

我想匹配 Java 中字符串的模式。字符串的格式将是这样的。

“插入 %ABC% %DEF%”

我希望能够在两组 '%' 之间获取字符串 ABC 和 DEF

public void parseInput(String input){
    Pattern p = Pattern.compile("?: .* %(.*)%)*");
    Matcher m = p.matcher(input);
    String s1 = m.group(1);
    String s2 = m.group(2);
}

到目前为止,我已经玩过,并继续遇到语法错误。在这种情况下,这是我最近的尝试,收到了一个悬空的元字符错误消息

4

1 回答 1

4

您可以使用该.find()方法将继续遍历您的字符串并产生它找到的内容:

    String str = "INSERT %ABC% %DEF%";
    Pattern p = Pattern.compile("%(.*?)%");
    Matcher m = p.matcher(str);
    while(m.find())
    {
        System.out.println(m.group(1));
    }

产量:

美国广播公司

国防军

编辑:就像仅供参考一样,具有这样的模式:%(.*)%将使您的正则表达式greedy,这意味着一旦找到最后一个 %(从而产生ABC% %DEF),它将停止匹配。?在运算符之后添加运算*符(根据我的示例)将使您的模式非贪婪,并且它将在%找到的第一个位置停止。

于 2013-04-16T05:52:40.560 回答